@font-face{font-family:Display;src:url('assets/display.woff') format('woff');font-weight:700;font-display:swap}:root{--bg:#282827;--ink:#e8e5df;--muted:#aaa8a2;--red:#ae3230;--line:#393936;--display:Display,'Arial Narrow',sans-serif}*{box-sizing:border-box}html,body{height:100%;margin:0;overflow:hidden}body{height:100svh;display:grid;grid-template-rows:76px minmax(0,1fr) 38px;background:var(--bg);color:var(--ink);font:14px/1.55 Arial,Helvetica,sans-serif}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}button:disabled{opacity:.3;cursor:default}a:focus-visible,button:focus-visible{outline:2px solid var(--red);outline-offset:5px}h1,h2,p{margin:0}h1,h2{font-family:var(--display);font-weight:700;line-height:.9;letter-spacing:-1.5px}em{font-style:normal;color:var(--red)}img{display:block;width:100%}header{display:flex;align-items:center;gap:45px;padding:0 3.5%;border-bottom:1px solid var(--line);z-index:2}.brand{font-family:var(--display);font-size:21px;line-height:.87;letter-spacing:-.5px}header nav{display:flex;gap:25px;font-size:10px;text-transform:uppercase;letter-spacing:1px}header nav a{position:relative;padding:6px 0}header nav a::after{content:'';position:absolute;bottom:0;left:0;width:100%;height:1px;background:var(--red);transform:scaleX(0);transform-origin:left;transition:transform .7s cubic-bezier(.16,1,.3,1)}header nav a:hover::after,header nav a[aria-current]::after{transform:scaleX(1)}.home-link{margin-left:auto;font-size:9px;letter-spacing:1px}main{min-height:0;position:relative}footer{display:flex;justify-content:space-between;align-items:center;padding:0 3.5%;font-size:8px;letter-spacing:1px;border-top:1px solid var(--line);color:var(--muted)}.micro{font-size:9px;line-height:1.6;letter-spacing:1.4px}.page{height:100%;padding:28px 4%;animation:arrive .85s cubic-bezier(.16,1,.3,1) both}.home{height:100%;position:relative;overflow:hidden;color:#191918}.home-image{height:100%;object-fit:cover;object-position:40% center}.home-note{position:absolute;left:4%;top:25px;font-size:9px;letter-spacing:1.5px;line-height:1.6}.home-menu{position:absolute;left:54%;right:5%;top:50%;transform:translateY(-50%);display:flex;flex-direction:column;align-items:flex-start}.home-menu a{font-family:var(--display);font-size:clamp(75px,10vw,155px);line-height:.85;color:#a42e2c;letter-spacing:-2px;position:relative;transition:transform .85s cubic-bezier(.16,1,.3,1),color .8s;animation:arrive 1.15s cubic-bezier(.16,1,.3,1) both}.home-menu a:nth-child(2){animation-delay:.09s}.home-menu a:nth-child(3){animation-delay:.18s}.home-menu a:nth-child(4){animation-delay:.27s}.home-menu a:hover{transform:translateX(10px);color:#7c211f}.home-menu span{font:9px Arial;letter-spacing:0;position:absolute;right:-22px;top:10px}.home-credit{position:absolute;left:4%;bottom:20px;font-size:9px;letter-spacing:1px}.page-title{display:flex;align-items:end;justify-content:space-between;gap:16px}.page-title h1{font-size:clamp(38px,5vw,76px)}.work{display:grid;grid-template-rows:auto auto minmax(0,1fr) 28px;gap:20px}.filters,.cv-tabs{display:flex;gap:8px;flex-wrap:wrap}.filters button,.cv-tabs button{border:1px solid var(--line);border-radius:30px;padding:6px 16px;font-size:10px;transition:background .55s,color .55s}.filters button.active,.filters button:hover,.cv-tabs button.active{background:var(--ink);color:var(--bg);border-color:var(--ink)}.project-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-template-rows:repeat(2,minmax(0,1fr));gap:16px 24px;min-height:0}.project-card{padding:0;display:flex;flex-direction:column;min-width:0;min-height:0;text-align:left;animation:arrive .7s cubic-bezier(.16,1,.3,1) both}.image-wrap{position:relative;flex:1;min-height:0;overflow:hidden;background:#222}.image-wrap img{height:100%;object-fit:cover;transition:transform 1s cubic-bezier(.16,1,.3,1)}.project-card:hover img{transform:scale(1.045)}.project-caption{display:flex;justify-content:space-between;align-items:center;gap:10px;padding-top:9px}.project-caption h3{font-family:var(--display);font-size:clamp(18px,1.8vw,27px);margin:0;line-height:1;text-transform:uppercase;letter-spacing:-.3px}.project-caption p{font-size:8px;color:var(--muted);text-transform:uppercase;letter-spacing:1px;margin-top:3px}.project-caption>span{font-size:20px}.video-badge{position:absolute;left:12px;bottom:12px;border:1px solid #fff8;border-radius:20px;padding:5px 10px;font-size:9px;letter-spacing:1px;background:#282827cc;color:#fff}.pager{display:flex;align-items:center;justify-content:space-between;font-size:9px;letter-spacing:1px}.pager button{font-size:9px;letter-spacing:1px;padding:4px 0}.light-page{--bg:#f2f2f2;--ink:#222;--muted:#666;--line:#d3d3d3;background:var(--bg);color:var(--ink)}.about{display:grid;grid-template-columns:1fr 1fr;gap:8%;padding:35px 6%;align-items:center}.about-photo{height:100%;min-height:0;overflow:hidden}.about-photo img{height:100%;object-fit:cover;object-position:center;filter:grayscale(1)}.about-copy{min-height:0;max-width:600px}.about-copy h1{font-size:clamp(50px,6.5vw,98px);margin:20px 0}.intro{font-size:clamp(16px,1.6vw,23px);line-height:1.25;margin-bottom:22px}#about-text{font-size:14px;line-height:1.8;max-width:450px;min-height:100px}#about-text p{animation:arrive .7s cubic-bezier(.16,1,.3,1)}.about-pager{display:flex;align-items:center;gap:22px;margin:15px 0;font-size:9px}.about-pager button{font-size:22px}.text-link{font-size:9px;letter-spacing:1px;border-bottom:1px solid var(--line);padding-bottom:7px;display:inline-block}.contact{display:grid;grid-template-columns:1.3fr 1fr;align-items:center;gap:8%;padding:35px 6%}.contact h1{font-size:clamp(85px,12vw,185px);margin:35px 0 24px;letter-spacing:-3px}.contact-note{color:var(--muted);font-size:12px}.contact-links{display:flex;flex-direction:column}.contact-links>a{display:flex;justify-content:space-between;align-items:center;padding:22px 0;border-bottom:1px solid var(--line);font-family:var(--display);font-size:clamp(27px,3vw,45px);line-height:1;transition:color .6s,transform .7s cubic-bezier(.16,1,.3,1)}.contact-links>a:hover{color:var(--red);transform:translateX(6px)}.contact-links .email{display:block;font:clamp(15px,1.6vw,22px) Arial;overflow-wrap:anywhere}.email .micro{display:block;color:var(--muted);margin-bottom:14px}.email>span:last-child{display:flex;justify-content:space-between;gap:15px}b{font-weight:400}.cv{display:grid;grid-template-rows:auto auto minmax(0,1fr) 28px;gap:22px;padding:30px 6%}.print-link{font-size:9px;letter-spacing:1px;text-align:right}.cv-tabs{padding-bottom:12px;border-bottom:1px solid var(--line)}#cv-content{align-self:center;width:min(100%,1000px);animation:arrive .7s;min-height:0}#cv-content h2{font-size:clamp(28px,3.5vw,52px);text-transform:uppercase;line-height:.95;color:var(--red);max-width:1000px}#cv-content .cv-subtitle{font-size:12px;margin:17px 0 22px;font-weight:bold}#cv-content p:not(.cv-subtitle){max-width:850px;font-size:clamp(12px,1.2vw,16px);line-height:1.8;margin-top:16px}#cv-content ul{padding-left:18px;margin:22px 0;max-width:900px;display:grid;gap:12px}#cv-content li{font-size:clamp(12px,1.1vw,15px);line-height:1.7}.outline-button{border:1px solid var(--line);border-radius:25px;padding:12px 20px;font-size:10px;letter-spacing:1px;margin-top:25px}dialog{background:#282827;color:#e8e5df;width:100vw;height:100svh;max-width:none;max-height:none;border:0;padding:0;margin:0;position:fixed;inset:0;overflow-y:auto}dialog::backdrop{background:#000b}.project-toolbar{position:sticky;top:0;z-index:2;display:flex;align-items:center;justify-content:space-between;padding:20px 4%;background:#282827f0;backdrop-filter:blur(10px);border-bottom:1px solid #393936;font-size:9px;letter-spacing:1px}.project-toolbar button{font-size:10px;letter-spacing:1px}.project-detail{max-width:1400px;margin:auto;padding:45px 5% 70px}.project-detail h2{font-size:clamp(45px,7vw,105px);color:#b53b38;text-transform:uppercase}.project-detail>p{max-width:700px;color:#aaa8a2;line-height:1.8;margin:25px 0 35px}.project-detail img{max-height:94svh;object-fit:contain;background:#30302e;margin-bottom:25px}.video-frame{width:100%;aspect-ratio:16/9;border:0;display:block}.video-direct{display:inline-block;font-size:11px;margin-top:15px;border-bottom:1px solid #666;padding-bottom:5px}.load-error{font-size:14px}.home-page header nav{visibility:hidden}@keyframes arrive{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}
@media(max-width:900px){.project-grid{grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:repeat(2,minmax(0,1fr))}.about{gap:5%;padding:25px 4%}.about-copy h1{font-size:60px}#about-text{font-size:12px}.contact{gap:5%;padding:30px 4%}.contact h1{font-size:100px}.cv{gap:15px}}
@media(max-width:600px){body{grid-template-rows:62px minmax(0,1fr) 30px}header{padding:0 5%;gap:20px}.brand{font-size:17px}header nav{gap:14px;font-size:8px}.home-link{font-size:8px}.home-page header nav{display:none}footer{font-size:6px;padding:0 5%;letter-spacing:.7px}.page{padding:22px 5%}.home-menu{left:44%;right:5%}.home-menu a{font-size:clamp(57px,15.5vw,90px);letter-spacing:-1px}.home-menu span{display:none}.home-image{object-position:35% center}.home-note{font-size:8px;left:5%}.home-credit{left:5%;font-size:7px;letter-spacing:.7px}.work{gap:15px;grid-template-rows:auto auto minmax(0,1fr) 26px}.page-title{align-items:center}.page-title h1{font-size:36px}.page-title .micro{font-size:7px;letter-spacing:.5px}.filters{gap:5px}.filters button{font-size:9px;padding:5px 10px}.project-grid{grid-template-columns:1fr 1fr;grid-template-rows:minmax(0,1fr);gap:13px}.project-caption h3{font-size:22px}.project-caption p{font-size:7px}.about{grid-template-columns:1fr;grid-template-rows:28% minmax(0,1fr);gap:18px;align-items:stretch}.about-photo img{object-position:center 42%}.about-copy{display:grid;grid-template-columns:1fr 1fr;gap:8px 14px;align-content:center;max-width:none}.about-copy>.micro{grid-column:1/-1;font-size:7px}.about-copy h1{font-size:39px;letter-spacing:-.8px;margin:5px 0}.intro{font-size:14px;margin:4px 0;align-self:center}#about-text{grid-column:1/-1;min-height:0;font-size:12px;line-height:1.65;max-width:none}.about-pager{margin:0;font-size:8px;gap:16px}.about-pager button{font-size:20px}.text-link{font-size:8px;align-self:center;text-align:right}.contact{grid-template-columns:1fr;grid-template-rows:auto auto;gap:18px;align-content:center}.contact h1{font-size:78px;margin:18px 0}.contact .micro{font-size:8px}.contact-note{font-size:10px}.contact-links>a{font-size:30px;padding:13px 0}.contact-links .email{font-size:16px}.email .micro{margin-bottom:9px}.cv{padding:22px 5%;gap:15px;grid-template-rows:auto auto minmax(0,1fr) 25px}.cv .page-title h1{font-size:32px}.print-link{font-size:7px;max-width:70px}.cv-tabs{gap:6px;padding-bottom:10px}.cv-tabs button{font-size:9px;padding:5px 10px}#cv-content h2{font-size:32px}#cv-content .cv-subtitle{font-size:10px;line-height:1.5;margin:12px 0}#cv-content p:not(.cv-subtitle){font-size:12px;line-height:1.7;margin-top:12px}#cv-content ul{gap:12px;margin:15px 0}#cv-content li{font-size:12px;line-height:1.65}.project-detail{padding:35px 5% 50px}.project-detail>p{font-size:13px}.project-toolbar{padding:18px 5%}}
@media(max-height:600px){body{grid-template-rows:52px minmax(0,1fr) 25px}.page{padding-top:15px;padding-bottom:12px}.page-title h1{font-size:36px}.work,.cv{gap:10px}.home-menu a{font-size:min(18svh,90px)}.about{grid-template-columns:1fr 1.5fr;grid-template-rows:1fr;gap:5%}.about-copy{display:block}.about-copy h1{font-size:42px;margin:10px 0}.about-photo{height:100%}.intro{font-size:14px;margin-bottom:10px}#about-text{font-size:11px;min-height:0}.about-pager{margin:5px 0}.contact{grid-template-columns:1fr 1fr}.contact h1{font-size:75px;margin:15px 0}.contact-links>a{padding:12px 0;font-size:28px}#cv-content h2{font-size:28px}#cv-content p:not(.cv-subtitle),#cv-content li{font-size:11px;line-height:1.6}#cv-content .cv-subtitle{font-size:10px;margin:10px 0}#cv-content ul{gap:8px;margin:12px 0}.cv-tabs{padding-bottom:6px}.project-caption h3{font-size:19px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}
/* Editorial refinements: large image typography and technical light text. */

:root{--display:Display,'Arial Narrow',sans-serif;--technical:Arial,Helvetica,sans-serif}
body{font-family:var(--technical);font-weight:300;font-size:15px}.micro,header nav,.home-link,footer,.home-note,.home-credit,.filters button,.cv-tabs button,.print-link,.pager,.text-link,.project-toolbar,.project-caption p,.video-badge{font-family:var(--technical);font-weight:300}.brand{display:flex;align-items:center;gap:12px;font-family:var(--display);font-weight:700}.brand img{width:42px;height:42px;object-fit:cover;border-radius:50%}.brand>span{font-size:19px;line-height:.95}.home-menu a{animation:none;transition:color .7s;line-height:.95}.home-menu a:hover{transform:none}.home-menu .menu-window{display:block;position:relative;right:auto;top:auto;font:inherit;letter-spacing:inherit;height:.95em;overflow:hidden}.home-menu .menu-primary,.home-menu .menu-secondary{display:block;position:relative;right:auto;top:auto;font:inherit;letter-spacing:inherit;line-height:.95;transition:transform .8s cubic-bezier(.22,1,.36,1)}.home-menu .menu-secondary{color:#7b211f}.home-menu a:hover .menu-primary,.home-menu a:hover .menu-secondary,.home-menu a:focus-visible .menu-primary,.home-menu a:focus-visible .menu-secondary{transform:translateY(-100%)}.home-menu .menu-number{font:10px var(--technical);position:absolute;right:-24px;top:10px}.home-menu{animation:arrive 1s cubic-bezier(.16,1,.3,1) both;transform:none;top:23%}
body[data-page="work"],body[data-page="about"]{height:auto;min-height:100svh;display:block;overflow:auto}html:has(body[data-page="work"]),html:has(body[data-page="about"]){height:auto;overflow-y:auto;overflow-x:hidden}body[data-page="work"] header,body[data-page="about"] header{height:76px;position:sticky;top:0;background:var(--bg);z-index:5}body[data-page="work"] main,body[data-page="about"] main{min-height:calc(100svh - 114px)}body[data-page="work"] footer,body[data-page="about"] footer{height:45px}.work{height:auto;display:block;padding:50px 4% 65px}.work .page-title h1{font-size:clamp(85px,12vw,170px);letter-spacing:-3px}.work .filters{margin:30px 0 35px}.work .project-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:none;gap:24px}.project-card{display:block;position:relative;animation:none}.project-card .image-wrap{aspect-ratio:1/1;display:block;height:auto;isolation:isolate}.project-card .image-wrap::after{content:'';position:absolute;inset:30% 0 0;background:linear-gradient(transparent,rgba(0,0,0,.72));z-index:0;pointer-events:none}.project-card img{height:100%;object-fit:cover}.project-caption{position:absolute;left:5%;right:5%;bottom:5%;z-index:1;padding:0;align-items:end;color:#f3f1eb;pointer-events:none}.project-caption h3{font-size:clamp(35px,4.5vw,74px);max-width:95%;line-height:.95;letter-spacing:-1px;text-wrap:balance;transition:transform .85s cubic-bezier(.16,1,.3,1);text-shadow:0 2px 20px #0004}.project-caption p{font-size:11px;letter-spacing:2px;margin-top:14px;color:#f3f1eb}.project-caption>span{font:40px var(--technical);transition:transform .7s}.project-card:hover .project-caption h3{transform:translateY(-5px)}.project-card:hover .project-caption>span{transform:translate(4px,-4px)}.video-badge{top:18px;bottom:auto;left:18px;z-index:1}.about{height:auto;min-height:calc(100svh - 114px);grid-template-columns:1.1fr 1fr;align-items:start;padding:60px 6%;gap:6%}.about-photo{height:auto;position:sticky;top:125px;background:#e7e7e7;overflow:hidden;aspect-ratio:4/5}.about-photo img{height:100%;object-fit:contain;object-position:center;filter:grayscale(1)}.about-copy{padding:25px 0}.about-copy h1{font-size:clamp(60px,7vw,110px);margin:25px 0}.about-copy .intro{font-family:var(--display);font-size:30px;line-height:1.1;font-weight:700;margin-bottom:35px}#about-text{font-family:var(--technical);font-size:17px;line-height:1.9;min-height:0;max-width:550px}#about-text p{margin-bottom:25px;animation:none}.about-copy .text-link{margin-top:15px;font-size:11px}.contact-links .email{font-family:var(--technical)}#cv-content p:not(.cv-subtitle),#cv-content li{font-family:var(--technical)}
@media(max-width:900px){.work .project-caption h3{font-size:clamp(30px,4.8vw,55px)}.about{grid-template-columns:1fr 1fr;padding:40px 4%;gap:5%}.about-copy h1{font-size:65px}#about-text{font-size:15px}.about-photo{top:110px}.home-menu{top:28%}}
@media(max-width:600px){.brand{gap:7px}.brand img{width:32px;height:32px}.brand>span{font-size:13px}header{gap:17px}header nav{gap:12px}.home-menu{top:30%}.home-menu .menu-number{display:none}body[data-page="work"] header,body[data-page="about"] header{height:62px}.work{padding:35px 5% 50px}.work .page-title h1{font-size:90px}.work .project-grid{grid-template-columns:1fr;gap:20px}.work .filters{gap:7px;margin:25px 0}.work .filters button{font-size:11px;padding:7px 13px}.work .project-caption h3{font-size:clamp(40px,11vw,65px)}.project-caption p{font-size:10px}.about{display:flex;flex-direction:column;gap:30px;padding:30px 5% 50px}.about-photo{position:static;aspect-ratio:1/1;width:100%;height:auto;background:#e7e7e7}.about-photo img{object-fit:contain}.about-copy{display:block;padding:0;max-width:none}.about-copy h1{font-size:68px;margin:25px 0}.about-copy .intro{font-size:28px;margin-bottom:30px}#about-text{font-size:16px;line-height:1.85}.about-copy .text-link{text-align:left;font-size:10px}.cv header .brand>span,.contact header .brand>span{font-size:13px}}
@media(max-height:600px){.home-menu{top:13%}.home-menu a{font-size:min(18svh,90px)}.about{min-height:0;grid-template-columns:1fr 1fr;grid-template-rows:none}.about-copy{display:block}.about-photo{height:auto}.work .project-grid{grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:none}}

@media(max-width:420px){header .brand>span{display:none}header{gap:20px}header nav{gap:15px}}

/* Calm typography: Nimbus Sans Narrow for display, Arial for supporting copy. */
:root{--display:Display,'Arial Narrow',sans-serif;--technical:Arial,Helvetica,sans-serif}
body{font-family:Arial,Helvetica,sans-serif;font-weight:400}h1,h2,h3,.home-menu a,.brand,.intro{font-family:var(--display)}
.home-menu a,.home-menu a:hover,.home-menu a:focus-visible{transform:none;animation:none;transition:color .45s ease,opacity .45s ease}
.home-menu a:hover,.home-menu a:focus-visible{color:#752522;opacity:.85}
.home-menu .menu-label{display:block;position:static;font:inherit;letter-spacing:inherit;line-height:.95}
.home-menu{animation:none}.home-menu .menu-number{transition:none}
.about{display:block;position:relative;isolation:isolate;min-height:calc(100svh - 114px);padding:65px 6%;overflow:hidden}
.about-photo{position:absolute;inset:0;top:0;width:100%;height:100%;aspect-ratio:auto;background:#f2f2f2;z-index:-2}
.about-photo img{width:100%;height:100%;object-fit:cover;object-position:70% 40%;filter:grayscale(1)}
.about-photo::after{content:'';position:absolute;inset:0;background:linear-gradient(90deg,rgba(242,242,242,.98) 0%,rgba(242,242,242,.95) 29%,rgba(242,242,242,.83) 49%,rgba(242,242,242,.18) 74%,rgba(242,242,242,.06) 100%)}
.about-copy{display:block;position:relative;width:52%;max-width:640px;padding:15px 0;z-index:1}
.about-copy h1{font-size:clamp(60px,7vw,110px);margin:25px 0}.about-copy .intro{font-size:30px;font-weight:700;margin-bottom:30px}
#about-text{font-family:Arial,Helvetica,sans-serif;font-size:15px;line-height:1.85;max-width:480px}#about-text p{margin-bottom:24px}
@media(max-width:900px){.about{padding:45px 5%}.about-copy{width:62%}.about-copy h1{font-size:70px}.about-photo img{object-position:60% center}.about-photo::after{background:linear-gradient(90deg,rgba(242,242,242,.97),rgba(242,242,242,.86) 48%,rgba(242,242,242,.25))}}
@media(max-width:600px){.about{display:block;padding:40px 6%;min-height:calc(100svh - 92px)}.about-copy{width:100%;max-width:none;padding:0}.about-photo{position:absolute;width:100%;height:100%;aspect-ratio:auto}.about-photo img{object-fit:cover;object-position:58% center;opacity:.75}.about-photo::after{background:linear-gradient(90deg,rgba(242,242,242,.96),rgba(242,242,242,.88) 48%,rgba(242,242,242,.72))}.about-copy h1{font-size:64px}.about-copy .intro{font-size:27px}#about-text{font-size:15px;line-height:1.85}.home-menu .menu-label{display:block}}
@media(max-height:600px){.about{display:block;padding:35px 6%}.about-copy{width:65%}.about-copy h1{font-size:55px}.about-copy .intro{font-size:25px}#about-text{font-size:14px}}

/* Full-canvas layout: navigation and credits belong to the page. */
:root{--bg:#282827;--line:#454541;--smooth:cubic-bezier(.16,1,.3,1)}
html{scroll-behavior:smooth;scroll-padding-top:32px}body{display:block;min-height:100svh;height:100svh;position:relative;background:var(--bg)}
body.light-page{--bg:#f2f2f2;--line:#d3d3d3}
body::after{content:'';position:fixed;inset:0;z-index:30;pointer-events:none;opacity:.045;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='grain'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.82' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' opacity='.75' filter='url(%23grain)'/%3E%3C/svg%3E");background-size:180px 180px;mix-blend-mode:multiply}
header,body[data-page="work"] header,body[data-page="about"] header{position:absolute;top:20px;left:0;right:0;height:auto;padding:0 3.5%;background:transparent;border:0;z-index:5;min-height:42px}
footer,body[data-page="work"] footer,body[data-page="about"] footer{border:0;background:transparent;height:auto;padding:0 3.5%;position:absolute;left:0;right:0;bottom:18px}
main{height:100%;min-height:0}.home{height:100svh}.home-page header{color:#272725}.home-page footer{color:#41413d}.home-note{top:90px}.home-credit{bottom:55px}
.home-menu{top:50%;left:54%;right:5%;transform:translateY(-50%);animation:none;max-height:calc(100svh - 160px)}
.home-menu a{font-size:min(9vw,15svh,145px);line-height:.95;transition:color .85s var(--smooth),transform .85s var(--smooth),letter-spacing .85s var(--smooth),opacity .85s var(--smooth);transform-origin:left center}
.home-menu a:hover,.home-menu a:focus-visible{transform:translateX(8px);color:#762624;opacity:1;letter-spacing:-1px}
.home-menu .menu-label{line-height:.95}.home-menu .menu-number{top:.6em;right:-23px;font-size:9px}
.page{animation:page-soft-in 1.15s var(--smooth) both}.contact{height:100svh;padding-top:100px;padding-bottom:90px}.work{padding-top:120px;padding-bottom:85px}
body[data-page="work"],body[data-page="about"],body[data-page="cv"]{display:block;height:auto;min-height:100svh;overflow:auto}
html:has(body[data-page="cv"]){height:auto;overflow-y:auto;overflow-x:hidden}
body[data-page="work"] main,body[data-page="about"] main,body[data-page="cv"] main{height:auto;min-height:100svh}
body[data-page="work"] footer,body[data-page="cv"] footer{position:relative;bottom:auto;margin:0 0 24px}
.about{min-height:100svh;padding-top:120px;padding-bottom:95px}.about-photo img{object-position:100% 40%}
.about-photo{background:#f2f2f2;overflow:hidden}.about-photo img{width:100%;object-fit:cover;transform:translateX(12%)}
.about-photo::after{background:linear-gradient(90deg,rgba(242,242,242,.98) 0%,rgba(242,242,242,.93) 32%,rgba(242,242,242,.7) 49%,rgba(242,242,242,.06) 72%,transparent 100%)}
.cv{display:block;height:auto;padding:120px 6% 75px}.cv>.page-title{margin-bottom:35px}.cv-tabs{padding:0 0 25px;border:0;gap:22px;margin-bottom:25px}.cv-tabs a{font-size:11px;letter-spacing:1px;border-bottom:1px solid transparent;padding-bottom:5px;transition:color .7s,border-color .7s}.cv-tabs a:hover{color:var(--red);border-color:var(--red)}
#cv-content{display:block;width:100%;animation:none;max-width:1100px;margin:0}#cv-content h2{font-size:clamp(45px,6vw,85px);margin-bottom:35px}.cv-section{margin-bottom:70px;scroll-margin-top:40px}.cv-entry{margin-bottom:40px}.cv-entry h3{font-family:var(--display);font-size:clamp(26px,3vw,43px);line-height:1.05;letter-spacing:-.5px;font-weight:700;margin:0 0 16px;color:#383836}#cv-content .cv-subtitle{font-size:13px;margin:14px 0 20px}#cv-content p:not(.cv-subtitle){font-size:15px;line-height:1.9;max-width:850px}#cv-content ul{max-width:900px;gap:12px}#cv-content li{font-size:15px;line-height:1.8}
.scroll-reveal{opacity:0;transform:translateY(18px);transition:opacity 1.1s var(--smooth),transform 1.1s var(--smooth)}.scroll-reveal.revealed{opacity:1;transform:none}
.project-card img{transition:transform 1.2s var(--smooth)}.project-caption h3,.project-caption>span{transition:transform 1s var(--smooth)}.filters button,.contact-links>a,header nav a::after{transition-duration:.85s}.project-toolbar{background:#282827ed}.project-detail img{background:#30302e}
@keyframes page-soft-in{from{opacity:0;transform:translateY(7px)}to{opacity:1;transform:none}}
@view-transition{navigation:auto}::view-transition-old(root){animation:soft-out .4s ease both}::view-transition-new(root){animation:soft-in .75s ease both}@keyframes soft-out{to{opacity:0}}@keyframes soft-in{from{opacity:0}to{opacity:1}}
@media(max-width:900px){.home-menu a{font-size:min(11vw,15svh,130px)}.home-menu{left:50%;top:50%;transform:translateY(-50%)}.about-photo img{transform:translateX(10%)}}
@media(max-width:600px){header,body[data-page="work"] header,body[data-page="about"] header{top:18px;padding:0 5%}.home-note{top:80px;font-size:8px}.home-menu{top:50%;left:44%;right:4%;transform:translateY(-50%);max-height:calc(100svh - 150px)}.home-menu a{font-size:min(13.5vw,14svh,95px)}.home-menu a:hover,.home-menu a:focus-visible{transform:translateX(4px);letter-spacing:-1px}.home-credit{bottom:48px}.contact{padding-top:95px;padding-bottom:70px}.work{padding-top:100px}.about{padding-top:100px;padding-bottom:80px}.about-photo img{transform:translateX(8%);object-position:100% center}.about-photo::after{background:linear-gradient(90deg,rgba(242,242,242,.95),rgba(242,242,242,.85) 48%,rgba(242,242,242,.65))}.cv{padding-top:105px;padding-bottom:50px}.cv>.page-title h1{font-size:40px}.cv-tabs{gap:17px;flex-wrap:wrap}#cv-content h2{font-size:50px}#cv-content p:not(.cv-subtitle),#cv-content li{font-size:14px;line-height:1.85}.cv-section{margin-bottom:50px}.cv-entry h3{font-size:30px}footer{font-size:7px}}
@media(max-height:600px){.home-menu{top:50%;transform:translateY(-50%)}.home-menu a{font-size:min(9vw,16svh,90px)}.home-note{top:80px}.contact{padding-top:95px;padding-bottom:55px}.about{padding-top:105px}.cv{padding-top:100px}.work{padding-top:105px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.scroll-reveal{opacity:1;transform:none}*,*::before,*::after{animation:none!important;transition:none!important}}
/* Quicker, light rendering with visible fine grain. */
body::after{background-image:url('assets/grain.svg');background-size:192px 192px;opacity:.32;mix-blend-mode:normal}
.page{animation:page-soft-in .42s cubic-bezier(.2,.75,.3,1) both}
.home-menu a{transition-duration:.32s}.home-menu a:hover,.home-menu a:focus-visible{transform:translateX(5px)}
.filters button,.contact-links>a,header nav a::after{transition-duration:.3s}.project-card img{transition-duration:.45s}.project-caption h3,.project-caption>span{transition-duration:.35s}
.scroll-reveal{transition-duration:.45s;transform:translateY(9px)}
::view-transition-old(root){animation-duration:.18s}::view-transition-new(root){animation-duration:.35s}
.about-copy{width:45%;max-width:550px}#about-text{max-width:435px}
.about-photo::after{background:linear-gradient(90deg,rgba(242,242,242,.98) 0%,rgba(242,242,242,.94) 20%,rgba(242,242,242,.72) 31%,rgba(242,242,242,.18) 43%,transparent 52%)}
.contact-links .email{font-family:var(--display);font-size:clamp(55px,7vw,100px);line-height:1;font-weight:700;overflow-wrap:normal}
.project-toolbar{backdrop-filter:none}.project-detail{padding-top:45px}
dialog[open]{animation:project-open .24s ease-out both}
dialog[open] .project-detail h2{animation:project-title-in .4s cubic-bezier(.2,.75,.3,1) both}
dialog[open] .project-detail>p{animation:project-title-in .4s cubic-bezier(.2,.75,.3,1) .06s both}
dialog[open] .project-toolbar{animation:project-open .28s ease-out both}
.project-image{opacity:0;transform:translateY(10px);transition:opacity .45s ease-out,transform .45s cubic-bezier(.2,.75,.3,1)}
.project-image.is-loaded.is-visible{opacity:1;transform:none}
dialog[open] .video-frame{animation:project-title-in .4s ease-out .1s both}
@keyframes project-open{from{opacity:0}to{opacity:1}}@keyframes project-title-in{from{opacity:0;transform:translateY(9px)}to{opacity:1;transform:translateY(0)}}
@media(max-width:900px){.about-copy{width:54%}.about-copy h1{font-size:62px}.about-photo::after{background:linear-gradient(90deg,rgba(242,242,242,.97),rgba(242,242,242,.83) 29%,rgba(242,242,242,.2) 51%,transparent 66%)}}
@media(max-width:600px){.about-copy{width:100%;max-width:none}.about-photo::after{background:linear-gradient(90deg,rgba(242,242,242,.94),rgba(242,242,242,.83) 40%,rgba(242,242,242,.6))}.contact-links .email{font-size:55px}}
@media(prefers-reduced-motion:reduce){.project-image{opacity:1;transform:none}*,*::before,*::after{animation:none!important;transition:none!important}}
dialog::after{content:'';position:fixed;inset:0;pointer-events:none;z-index:4;background-image:url('assets/grain.svg');background-size:192px 192px;opacity:.28}
/* Deliberate directional movement, without background grain. */
body::after,dialog::after{content:none!important;display:none!important}
.contact-links .email{font-size:clamp(27px,3vw,45px);padding:22px 0;line-height:1}
.page{animation:page-direction-in 1s cubic-bezier(.16,1,.3,1) both}
.home-menu a{transition-duration:.95s}.home-menu a:hover,.home-menu a:focus-visible{transform:translateX(17px);letter-spacing:0}
.project-card.card-reveal{opacity:0;transform:translateX(var(--card-entry-x,-45px));transition:opacity 1.1s cubic-bezier(.16,1,.3,1),transform 1.25s cubic-bezier(.16,1,.3,1)}
.project-card.card-reveal.card-visible{opacity:1;transform:translateX(0)}
.project-card .project-caption h3{transition:transform 1.1s cubic-bezier(.16,1,.3,1)}.project-card:hover .project-caption h3{transform:translateY(-12px)}
.project-card img{transition:transform 1.2s cubic-bezier(.16,1,.3,1)}.project-card:hover img{transform:scale(1.07)}
.project-card.card-reveal .project-caption h3{transform:translateY(23px)}.project-card.card-reveal.card-visible .project-caption h3{transform:translateY(0);transition-delay:.1s}.project-card.card-visible:hover .project-caption h3{transform:translateY(-12px);transition-delay:0s}
.scroll-reveal{transform:translateX(-38px);transition-duration:1.05s}
.contact-links>a{animation:text-from-right 1.05s cubic-bezier(.16,1,.3,1) both;transition-duration:.8s}.contact-links>a:nth-child(2){animation-delay:.08s}.contact-links>a:nth-child(3){animation-delay:.16s}.contact-links>a:nth-child(4){animation-delay:.24s}
.about-copy h1{animation:text-from-left 1.05s cubic-bezier(.16,1,.3,1) .08s both}.about-copy .intro,#about-text{animation:text-from-right 1.1s cubic-bezier(.16,1,.3,1) .15s both}
dialog[open]{animation:project-direction-open .85s cubic-bezier(.16,1,.3,1) both}
dialog[open] .project-detail h2{animation:text-from-left 1s cubic-bezier(.16,1,.3,1) .05s both}
dialog[open] .project-detail>p{animation:text-from-right 1.05s cubic-bezier(.16,1,.3,1) .13s both}
dialog[open] .project-toolbar{animation:text-from-left .85s cubic-bezier(.16,1,.3,1) both}
.project-image{opacity:0;transform:translateX(var(--image-entry-x,-55px));transition:opacity 1.1s cubic-bezier(.16,1,.3,1),transform 1.2s cubic-bezier(.16,1,.3,1)}.project-image.is-loaded.is-visible{opacity:1;transform:translateX(0)}
dialog[open] .video-frame{animation:text-from-right 1.1s cubic-bezier(.16,1,.3,1) .12s both}
dialog[open].is-closing{animation:project-direction-exit .62s cubic-bezier(.4,0,.6,1) both}dialog[open].is-closing .project-detail h2{animation:text-exit-left .5s ease both}dialog[open].is-closing .project-detail>p{animation:text-exit-right .5s ease both}
::view-transition-old(root){animation:page-direction-out .45s ease both}::view-transition-new(root){animation:page-direction-in .8s cubic-bezier(.16,1,.3,1) both}
@keyframes page-direction-in{from{opacity:0;transform:translateX(32px)}to{opacity:1;transform:translateX(0)}}@keyframes page-direction-out{to{opacity:0;transform:translateX(-32px)}}
@keyframes text-from-left{from{opacity:0;transform:translateX(-48px)}to{opacity:1;transform:translateX(0)}}@keyframes text-from-right{from{opacity:0;transform:translateX(48px)}to{opacity:1;transform:translateX(0)}}
@keyframes project-direction-open{from{opacity:0;transform:translateY(65px)}to{opacity:1;transform:translateY(0)}}@keyframes project-direction-exit{from{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(65px)}}@keyframes text-exit-left{to{opacity:0;transform:translateX(-45px)}}@keyframes text-exit-right{to{opacity:0;transform:translateX(45px)}}
@media(max-width:900px){.project-card.card-reveal{--card-entry-x:25px!important}}
@media(max-width:600px){.contact-links .email{font-size:30px;padding:13px 0}.home-menu a:hover,.home-menu a:focus-visible{transform:translateX(9px)}}
@media(max-height:600px){.contact-links .email{font-size:28px;padding:12px 0}}
@media(prefers-reduced-motion:reduce){.project-card.card-reveal,.scroll-reveal,.project-image{opacity:1;transform:none}*,*::before,*::after{animation:none!important;transition:none!important}}
/* A centered project transition and reliable scroll reveals. */
dialog[open]{transform-origin:center center;animation:project-focus-in .6s cubic-bezier(.16,1,.3,1) both}
dialog[open]::backdrop{background:#28282765;animation:project-backdrop-in .5s ease both}
dialog[open].is-closing{animation:project-focus-out .45s cubic-bezier(.4,0,.6,1) both}
dialog[open].is-closing::backdrop{animation:project-backdrop-out .45s ease both}
dialog[open].is-closing .project-detail h2,dialog[open].is-closing .project-detail>p,dialog[open].is-closing .project-toolbar{animation:none;transform:none;opacity:1}
.project-image{transform:translate(var(--image-entry-x,-45px),36px) scale(.985);transition:opacity 1s cubic-bezier(.16,1,.3,1),transform 1.15s cubic-bezier(.16,1,.3,1)}
.project-image.is-loaded.is-visible{opacity:1;transform:translate(0,0) scale(1)}
.about-photo img{transform:translateX(12%) scale(1.2);transform-origin:65% 20%;object-position:100% 30%}
@keyframes project-focus-in{from{opacity:0;transform:scale(.975)}to{opacity:1;transform:scale(1)}}
@keyframes project-focus-out{from{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.96)}}
@keyframes project-backdrop-in{from{opacity:0}to{opacity:1}}@keyframes project-backdrop-out{from{opacity:1}to{opacity:0}}
@media(max-width:900px){.about-photo img{transform:translateX(10%) scale(1.2)}}
@media(max-width:600px){.about-photo img{transform:translateX(8%) scale(1.18);transform-origin:65% 15%}.project-image{transform:translate(0,30px) scale(.985)}}
@media(prefers-reduced-motion:reduce){.project-image{opacity:1;transform:none}*,*::before,*::after{animation:none!important;transition:none!important}}
/* Slow-start hover and a short fade-through-dark return. */
.home-menu a{transition-property:transform,color,letter-spacing,opacity;transition-duration:1.05s;transition-timing-function:cubic-bezier(.42,0,.18,1)}
.project-floating-close{position:fixed;top:22px;right:4%;z-index:5;padding:10px 14px;background:#282827bd;border:0;font-size:10px;letter-spacing:1px;border-radius:3px}
.project-detail{padding-top:65px}.project-detail>.project-category{font-size:9px;letter-spacing:1.5px;line-height:1.4;margin:0 0 20px;color:#aaa8a2;animation:none}
.screen-curtain[open]{position:fixed;inset:0;width:100vw;height:100svh;max-width:none;max-height:none;background:#20201f;border:0;margin:0;padding:0;opacity:0;transform:none!important;animation:none!important;transition:opacity .46s cubic-bezier(.4,0,.3,1);overflow:hidden}
.screen-curtain[open].covered{opacity:1}.screen-curtain::backdrop{background:transparent!important;animation:none!important}.screen-curtain::after{display:none!important}
@media(max-width:600px){.screen-curtain[open]{width:100%;height:100dvh;min-height:100dvh}}
.about-photo img{transform:translateX(12%) scale(1.08);object-position:100% 26%;transform-origin:65% 20%}
@media(max-width:900px){.about-photo img{transform:translateX(10%) scale(1.08)}}
@media(max-width:600px){.about-photo img{transform:translateX(8%) scale(1.08)}.project-floating-close{top:16px;right:4%}.project-detail{padding-top:65px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{transition:none!important;animation:none!important}}

/* Stable link hit areas: only the inner lettering moves. */
.home-menu{left:52%;right:4%}
.home-menu a,.home-menu a:hover,.home-menu a:focus-visible{font-size:min(10.5vw,17svh,175px);transform:none;animation:none;letter-spacing:-2px;opacity:1;transition:color 1s cubic-bezier(.45,0,.55,1)}
.home-menu .menu-label,.contact-links .contact-label{display:block;pointer-events:none;transform:translateX(0);transition:transform 1.1s cubic-bezier(.45,0,.55,1);will-change:transform}
.home-menu a:hover .menu-label,.home-menu a:focus-visible .menu-label,.contact-links>a:hover .contact-label,.contact-links>a:focus-visible .contact-label{transform:translateX(12px)}
.contact-links>a,.contact-links>a:hover,.contact-links>a:focus-visible{transform:none;animation:none;transition:color 1s cubic-bezier(.45,0,.55,1)}
.contact-links{animation:text-from-right 1.2s cubic-bezier(.25,.1,.25,1) .1s both}
@media(max-width:900px){.home-menu{left:48%}.home-menu a,.home-menu a:hover,.home-menu a:focus-visible{font-size:min(12vw,17svh,150px)}}
@media(max-width:600px){.home-menu{left:42%;right:4%}.home-menu a,.home-menu a:hover,.home-menu a:focus-visible{font-size:min(15vw,17svh,115px);letter-spacing:-1px}.home-menu a:hover .menu-label,.home-menu a:focus-visible .menu-label{transform:translateX(8px)}}
@media(max-height:600px){.home-menu a,.home-menu a:hover,.home-menu a:focus-visible{font-size:min(10.5vw,17svh,110px)}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{transition:none!important;animation:none!important}.home-menu a:hover .menu-label,.home-menu a:focus-visible .menu-label,.contact-links>a:hover .contact-label,.contact-links>a:focus-visible .contact-label{transform:none}}

/* Brisk hover; independent, visible Home image and text entrances. */
.home-menu a,.home-menu a:hover,.home-menu a:focus-visible,.contact-links>a,.contact-links>a:hover,.contact-links>a:focus-visible{transition:color .45s cubic-bezier(.3,0,.2,1)}
.home-menu .menu-label,.contact-links .contact-label{transition:transform .48s cubic-bezier(.3,0,.2,1)}
.home-page .home{animation:none}
.home-page.home-entering .home-image{animation:home-image-enter 1.4s cubic-bezier(.22,1,.36,1) both}
.home-page.home-entering .home-menu>a{animation:home-option-enter 1.05s cubic-bezier(.22,1,.36,1) both}
.home-page.home-entering .home-menu>a:nth-child(1){animation-delay:.1s}
.home-page.home-entering .home-menu>a:nth-child(2){animation-delay:.2s}
.home-page.home-entering .home-menu>a:nth-child(3){animation-delay:.3s}
.home-page.home-entering .home-menu>a:nth-child(4){animation-delay:.4s}
.home-page.home-entering .home-note,.home-page.home-entering .home-credit,.home-page.home-entering header,.home-page.home-entering footer{animation:home-detail-enter 1.1s cubic-bezier(.22,1,.36,1) .15s both}
@keyframes home-image-enter{from{opacity:0;transform:translateX(-28px) scale(1.08)}to{opacity:1;transform:translateX(0) scale(1)}}
@keyframes home-option-enter{from{opacity:0;transform:translateX(85px)}to{opacity:1;transform:translateX(0)}}
@keyframes home-detail-enter{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{transition:none!important;animation:none!important}}

/* Monochrome covers reveal their original colors on interaction. */
.project-card img{filter:grayscale(1);transition:transform 1.2s cubic-bezier(.16,1,.3,1),filter .65s cubic-bezier(.3,0,.2,1)}
.project-card:hover img,.project-card:focus-visible img{filter:grayscale(0)}
.project-caption p{color:#ed625b;text-shadow:0 1px 8px #282827}
@media(prefers-reduced-motion:reduce){.project-card img{transition:none}}

/* Four square project covers per desktop row. */
.work .project-grid{grid-template-columns:repeat(4,minmax(0,1fr))}
.work .project-caption h3{font-size:clamp(24px,2.3vw,44px)}
@media(max-width:900px){.work .project-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.work .project-caption h3{font-size:clamp(30px,4.8vw,55px)}}
@media(max-width:600px){.work .project-grid{grid-template-columns:1fr}.work .project-caption h3{font-size:clamp(40px,11vw,65px)}}

/* Viewport-fitted, unframed project media. Wrapper surfaces remain transparent. */
#project-dialog{overflow-x:hidden;overscroll-behavior:contain;background:#282827}
#project-dialog[open]{animation:project-surface-in .55s ease both;transform:none}
.project-detail{width:100%;max-width:none;margin:0;padding:0 0 32px;background:transparent;border:0;box-shadow:none}
.project-intro{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);column-gap:5%;align-items:end;padding:58px 4% 18px}
.project-intro .project-category{grid-column:1/-1;font:400 9px/1.4 Arial,Helvetica,sans-serif;letter-spacing:1.4px;color:#aaa8a2;margin:0 0 10px}
#project-title{font-size:clamp(34px,4.5vw,66px);line-height:.98;letter-spacing:-.02em;margin:0;color:#b53b38;text-wrap:balance;overflow-wrap:break-word}
#project-description{max-width:65ch;font:400 14px/1.65 Arial,Helvetica,sans-serif;color:#b3b1ab;margin:0}
#project-dialog[open] #project-title{animation:project-copy-in .75s cubic-bezier(.22,1,.36,1) both}
#project-dialog[open] #project-description{animation:project-copy-in .8s cubic-bezier(.22,1,.36,1) .08s both}
#project-images{display:flex;flex-direction:column;gap:24px;width:100%;max-width:none;margin:0;padding:0;background:transparent;border:0;box-shadow:none}
.project-media{display:flex;align-items:center;justify-content:center;flex:none;width:100%;height:var(--media-height,calc(100svh - 48px));margin:0;padding:0;background:transparent;border:0;border-radius:0;box-shadow:none;overflow:visible}
.project-media:first-child{height:var(--first-media-height,calc(100svh - 200px))}
.project-detail .project-image{display:block;flex:none;width:auto;height:auto;max-width:calc(100% - 32px);max-height:100%;min-width:0;min-height:0;margin:0;padding:0;background:transparent;border:0;border-radius:0;box-shadow:none;object-fit:contain;opacity:0;transform:translateY(16px);transition:opacity .75s cubic-bezier(.22,1,.36,1),transform .85s cubic-bezier(.22,1,.36,1)}
.project-detail .project-image.is-loaded.is-visible{opacity:1;transform:translateY(0)}
.project-media .video-frame{display:block;flex:none;width:var(--video-width,90vw);height:var(--video-height,50.625vw);max-width:calc(100% - 32px);max-height:100%;aspect-ratio:16/9;object-fit:contain;border:0;background:transparent}
.video-direct{align-self:flex-start;margin:0 4%;font-size:11px}
.project-detail>.outline-button{margin:28px 4% 0}
@keyframes project-surface-in{from{opacity:0}to{opacity:1}}
@keyframes project-copy-in{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}
@media(max-width:600px){
 .project-intro{display:block;padding:56px 20px 16px}
 .project-intro .project-category{font-size:8px;margin-bottom:8px}
 #project-title{font-size:clamp(30px,8vw,42px);line-height:1}
 #project-description{font-size:12px;line-height:1.55;margin-top:12px;max-width:60ch}
 #project-images{gap:16px}
 .project-detail .project-image,.project-media .video-frame{max-width:calc(100% - 20px)}
 .project-detail>.outline-button{margin-left:20px}
 .video-direct{margin-left:20px}
}
@media(max-height:500px){
 .project-intro{padding-top:50px;padding-bottom:12px}
 #project-title{font-size:clamp(28px,4vw,40px)}
 #project-description{font-size:12px;line-height:1.5}
}
@media(prefers-reduced-motion:reduce){
 #project-dialog[open],#project-dialog[open] #project-title,#project-dialog[open] #project-description,#project-dialog[open] .video-frame{animation:none!important}
 .project-detail .project-image{opacity:1;transform:none;transition:none}
}

/* Restore the established directional entrance and scroll motion. */
#project-dialog[open]{animation:project-focus-in .6s cubic-bezier(.16,1,.3,1) both;transform-origin:center center}
#project-dialog[open] #project-title{animation:text-from-left 1s cubic-bezier(.16,1,.3,1) .05s both}
#project-dialog[open] #project-description{animation:text-from-right 1.05s cubic-bezier(.16,1,.3,1) .13s both}
.project-detail .project-image{transform:translate(var(--image-entry-x,-45px),36px) scale(.985);transition:opacity 1s cubic-bezier(.16,1,.3,1),transform 1.15s cubic-bezier(.16,1,.3,1)}
.project-detail .project-image.is-loaded.is-visible{opacity:1;transform:translate(0,0) scale(1)}
.project-media .project-preview{display:block;flex:none;width:auto;height:auto;max-width:calc(100% - 32px);max-height:100%;object-fit:contain;margin:0;padding:0;background:transparent;border:0;border-radius:0;box-shadow:none;opacity:0;transform:translate(45px,36px) scale(.985);transition:opacity 1s cubic-bezier(.16,1,.3,1),transform 1.15s cubic-bezier(.16,1,.3,1)}
.project-media .project-preview.is-visible{opacity:1;transform:translate(0,0) scale(1)}
@media(max-width:600px){.project-media .project-preview{max-width:calc(100% - 20px)}.project-detail .project-image,.project-media .project-preview{transform:translateY(30px) scale(.985)}}
@media(prefers-reduced-motion:reduce){#project-dialog[open],#project-dialog[open] #project-title,#project-dialog[open] #project-description{animation:none!important}.project-detail .project-image,.project-media .project-preview{opacity:1;transform:none;transition:none}}

/* Experimental atmosphere: the project's first image, softened behind the gallery. */
#project-dialog{overflow:hidden;isolation:isolate}
.project-scroll{position:relative;z-index:1;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;background:transparent}
.project-atmosphere{position:absolute;inset:0;z-index:0;overflow:hidden;pointer-events:none;opacity:0;transition:opacity .8s ease;background:transparent}
.project-atmosphere.is-ready{opacity:1}
.project-atmosphere-image{position:absolute;inset:-12%;width:124%;height:124%;max-width:none;max-height:none;object-fit:cover;opacity:.30;filter:blur(10px) saturate(.65);transform:translate3d(0,var(--atmosphere-y,0px),0);will-change:transform}
.project-atmosphere::after{content:'';position:absolute;inset:0;background:linear-gradient(180deg,#28282778,#28282738 45%,#28282770)}
#project-dialog .project-floating-close{z-index:3}
@media(max-width:600px){.project-atmosphere-image{opacity:.24;filter:blur(8px) saturate(.65)}}
@media(prefers-reduced-motion:reduce){.project-atmosphere{transition:none}.project-atmosphere-image{transform:none;will-change:auto}}

/* Full-screen project cover, with a stronger scroll response behind the gallery. */
.project-atmosphere-image{inset:-20%;width:140%;height:140%;filter:blur(12px) saturate(.65)}
.project-hero{position:relative;width:100%;height:100svh;min-height:100svh;isolation:isolate;overflow:hidden;background:transparent}
.project-detail .project-hero-image{position:absolute;inset:0;z-index:0;width:100%;height:100%;max-width:none;max-height:none;object-fit:cover;object-position:50% 42%;background:transparent;margin:0;padding:0;border:0;box-shadow:none}
.project-hero::after{content:'';position:absolute;inset:0;z-index:1;pointer-events:none;background:linear-gradient(180deg,#28282780 0%,#28282720 35%,transparent 60%,#28282710 75%,#282827 100%)}
.project-hero .project-intro{position:relative;z-index:2;grid-template-columns:minmax(0,1.65fr) minmax(0,1fr);column-gap:4%;align-items:start;padding:72px 4% 36px}
.project-hero .project-category{margin-bottom:18px;color:#d1cec6}
#project-title{font-size:clamp(52px,6vw,112px);line-height:.94;letter-spacing:-.025em;text-shadow:0 2px 18px #28282730}
#project-description{padding-top:6px;color:#dedbd4;text-shadow:0 1px 12px #28282780}
#project-dialog .project-floating-close{background:transparent;border:0;outline-offset:6px;box-shadow:none;border-radius:0;padding:8px 0;text-shadow:0 1px 12px #282827b0}
#project-dialog[open] .project-hero-image{animation:project-hero-arrive 1.3s cubic-bezier(.22,1,.36,1) both}
@keyframes project-hero-arrive{from{opacity:0;transform:scale(1.06)}to{opacity:1;transform:scale(1)}}
@media(max-width:600px){
 .project-atmosphere-image{filter:blur(9.6px) saturate(.65)}
 .project-hero .project-intro{display:block;padding:72px 20px 28px}
 .project-hero .project-category{margin-bottom:16px}
 #project-title{font-size:clamp(44px,10.8vw,72px);line-height:.96}
 #project-description{font-size:13px;line-height:1.65;margin-top:22px;max-width:38ch;padding-top:0}
 .project-hero::after{background:linear-gradient(180deg,#282827aa 0%,#28282738 48%,#28282710 70%,#282827 100%)}
}
@media(max-height:500px){
 .project-hero .project-intro{padding-top:54px}
 .project-hero .project-category{margin-bottom:12px}
 #project-title{font-size:clamp(34px,5vw,58px)}
 #project-description{font-size:12px;line-height:1.5}
}
@media(prefers-reduced-motion:reduce){#project-dialog[open] .project-hero-image{animation:none!important}.project-atmosphere-image{transform:none;will-change:auto}}

/* Project production details remain part of the compact introduction. */
.project-tools{display:block;margin-top:14px;font-size:10px;line-height:1.65;font-weight:400;letter-spacing:.05em;color:#d1cec6}
/* A slightly deeper charcoal for Work and project galleries. */
body[data-page="work"]{--bg:#222221;background:var(--bg)}
body[data-page="work"] #project-dialog{background:var(--bg)}
body[data-page="work"] .project-atmosphere::after{background:linear-gradient(180deg,#222221a0,#22222170 45%,#22222198)}
body[data-page="work"] .project-hero::after{background:linear-gradient(180deg,#22222180 0%,#22222120 35%,transparent 60%,#22222110 75%,#222221 100%)}
@media(max-width:600px){body[data-page="work"] .project-hero::after{background:linear-gradient(180deg,#222221aa 0%,#22222138 48%,#22222110 70%,#222221 100%)}}

/* Equal-width, natural-height gallery images; full image inspection opens separately. */
#project-images{gap:32px;padding-top:24px}
.project-media.project-media-image,.project-media.project-media-image:first-child{height:auto;min-height:0}
.gallery-image-trigger{display:block;flex:none;width:var(--gallery-width,calc(100% - 64px));max-width:1280px;margin:0;padding:0;border:0;border-radius:0;background:transparent;color:inherit;cursor:zoom-in;line-height:0}
.gallery-image-trigger:focus-visible{outline:2px solid #e8e5df;outline-offset:6px}
.project-detail .gallery-image-trigger .project-image{width:100%;height:auto;max-width:100%;max-height:none;object-fit:contain}
.project-scroll.image-viewing{overflow-y:hidden}
#image-viewer{position:fixed;inset:0;width:100%;height:100dvh;max-width:none;max-height:none;margin:0;padding:0;border:0;overflow:hidden;background:#20201ff5;color:#e8e5df;box-sizing:border-box}
#image-viewer::backdrop{background:#222221bd}
#image-viewer[open]{display:grid;grid-template-rows:minmax(0,1fr);animation:image-viewer-enter .65s cubic-bezier(.16,1,.3,1) both}
.image-viewer-stage{display:flex;align-items:center;justify-content:center;min-width:0;min-height:0;padding:64px 24px 48px;box-sizing:border-box}
#image-viewer .image-viewer-image{display:block;width:auto;height:auto;max-width:100%;max-height:100%;object-fit:contain;background:transparent;opacity:0;transform:translateY(24px) scale(.96);transition:opacity .55s ease,transform .7s cubic-bezier(.16,1,.3,1)}
#image-viewer.is-ready .image-viewer-image{opacity:1;transform:translateY(0) scale(1)}
.image-viewer-close{position:absolute;z-index:2;top:18px;right:28px;margin:0;padding:8px 0;border:0;background:transparent;color:inherit;font:400 12px/1.4 Arial,Helvetica,sans-serif;letter-spacing:.09em;cursor:pointer}
.image-viewer-caption{position:absolute;bottom:14px;left:24px;right:24px;margin:0;text-align:center;color:#c5c2bb;font:400 10px/1.5 Arial,Helvetica,sans-serif;letter-spacing:.05em}
#image-viewer.is-closing{animation:image-viewer-exit .42s ease both;pointer-events:none}
#image-viewer.is-closing .image-viewer-image{opacity:0;transform:translateY(16px) scale(.97);transition-duration:.38s}
@keyframes image-viewer-enter{from{opacity:0}to{opacity:1}}
@keyframes image-viewer-exit{from{opacity:1}to{opacity:0}}
@media(max-width:600px){#project-images{gap:20px;padding-top:16px}.gallery-image-trigger{width:var(--gallery-width,calc(100% - 20px))}.image-viewer-stage{padding:56px 10px 44px}.image-viewer-close{top:12px;right:18px}.image-viewer-caption{left:10px;right:10px;font-size:9px}}
@media(prefers-reduced-motion:reduce){#image-viewer[open],#image-viewer.is-closing{animation:none!important}#image-viewer .image-viewer-image,#image-viewer.is-closing .image-viewer-image{transform:none;transition:none}#image-viewer.is-ready .image-viewer-image{opacity:1}}
/* Match both Close controls across project and full-screen image views. */
.project-floating-close,.image-viewer-close{font:400 10px/1.4 Arial,Helvetica,sans-serif;letter-spacing:1px}
/* Keep the Close control anchored identically in both viewing layers. */
.project-floating-close,.image-viewer-close{position:fixed;top:22px;right:4%;margin:0;padding:8px 0}
@media(max-width:600px){.project-floating-close,.image-viewer-close{top:16px;right:4%}}

/* Mobile art direction and touch focus, while retaining keyboard focus cues. */
@media(max-width:600px){.home-image{object-position:25% center}}
.project-floating-close,.image-viewer-close,.gallery-image-trigger{-webkit-tap-highlight-color:transparent}
body[data-input="pointer"] .project-floating-close:focus,
body[data-input="pointer"] .project-floating-close:focus-visible,
body[data-input="pointer"] .image-viewer-close:focus,
body[data-input="pointer"] .image-viewer-close:focus-visible,
body[data-input="pointer"] .gallery-image-trigger:focus,
body[data-input="pointer"] .gallery-image-trigger:focus-visible{outline:none;box-shadow:none}
/* Blend Work and project scrollbars into their charcoal surface. */
html:has(body[data-page="work"]),body[data-page="work"],body[data-page="work"] *{scrollbar-color:#74716b #222221;scrollbar-width:auto}
html:has(body[data-page="work"]){color-scheme:dark;background:#222221}
body[data-page="work"]{overflow:visible}
html:has(body[data-page="work"] #project-dialog[open]),html:has(body[data-page="work"] #project-transition[open]){overflow:hidden}
html:has(body[data-page="work"])::-webkit-scrollbar,body[data-page="work"]::-webkit-scrollbar,body[data-page="work"] *::-webkit-scrollbar{width:14px;height:14px}
html:has(body[data-page="work"])::-webkit-scrollbar-track,body[data-page="work"]::-webkit-scrollbar-track,body[data-page="work"] *::-webkit-scrollbar-track{background:#222221}
html:has(body[data-page="work"])::-webkit-scrollbar-thumb,body[data-page="work"]::-webkit-scrollbar-thumb,body[data-page="work"] *::-webkit-scrollbar-thumb{background:#74716b;border:2px solid #222221;border-radius:8px}
html:has(body[data-page="work"])::-webkit-scrollbar-corner,body[data-page="work"] *::-webkit-scrollbar-corner{background:#222221}

/* Justified desktop rows: a common image height per row and constant gutters. */
.project-gallery{height:auto;min-height:var(--project-viewport-height,100dvh);display:flex;flex-direction:column;gap:16px;padding:56px 14px 24px;box-sizing:border-box}
#project-images{display:flex;flex:none;min-height:0;flex-direction:column;gap:10px;padding:0;overflow:visible}
.gallery-row{display:flex;justify-content:center;align-items:flex-start;gap:10px;width:100%;min-width:0}
#project-images .project-media-image{display:block;flex:none;width:var(--tile-width,100%);height:var(--tile-height,auto);min-width:0;max-height:none}
#project-images .gallery-image-trigger{width:100%;height:100%;max-width:none;aspect-ratio:auto;display:block;transition:transform .65s cubic-bezier(.22,1,.36,1),filter .65s ease}
#project-images .gallery-image-trigger .project-image{width:100%;height:100%;max-width:100%;max-height:100%;object-fit:contain}
.project-gallery>.outline-button{flex:none;align-self:flex-start;margin:0;min-height:40px}
@media(hover:hover){#project-images .gallery-image-trigger:hover{transform:scale(1.008);filter:brightness(1.07)}}
@media(max-width:600px){
 .project-gallery{padding:16px 10px 20px}
 #project-images .project-media-image{width:100%;height:auto}
 #project-images .gallery-image-trigger{height:auto}
 #project-images .gallery-image-trigger .project-image{width:100%;height:auto;max-height:none}
}
/* Cover the dynamic mobile viewport and suppress the inert page beneath it. */
#project-dialog{width:100%;height:100dvh;min-height:100dvh;max-height:100dvh}
#project-dialog::backdrop{background:#222221;animation:none!important}
body:has(#project-dialog[open]) .work{visibility:hidden}
.project-scroll{scroll-snap-type:none}
.project-hero{scroll-snap-align:start;height:var(--project-viewport-height,100dvh);min-height:var(--project-viewport-height,100dvh)}
@media(prefers-reduced-motion:reduce){.project-scroll{scroll-snap-type:none}}
/* The film occupies the existing hero surface, with its own quiet playback control. */
.hero-film-frame{position:absolute;inset:0;z-index:0;background-size:cover;background-position:center;background-repeat:no-repeat}
.project-hero-video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center;opacity:0;transition:opacity .3s ease}
.hero-film-frame.is-playing .project-hero-video{opacity:1}
.project-hero.has-video .project-hero-image{visibility:hidden}
.hero-video-toggle{position:absolute;right:4%;bottom:32px;z-index:3;min-height:44px;padding:12px 0;font:400 10px/1.4 Arial,Helvetica,sans-serif;letter-spacing:1px;text-shadow:0 1px 10px #222221}
@media(max-width:600px){
 .project-hero.has-video{height:auto;min-height:var(--project-viewport-height,100dvh);display:flex;flex-direction:column;justify-content:center;padding-bottom:64px}
 .project-hero.has-video .project-intro{order:0;width:100%;padding-top:64px}
 .project-hero.has-video .hero-film-frame{position:relative;inset:auto;order:1;width:100%;height:auto;aspect-ratio:16/9;background-size:contain}.project-hero.has-video .project-hero-video{object-fit:contain}
 .project-hero.has-video::after{display:none}
 .hero-video-toggle{bottom:8px}
}
/* Previous/next retain the fixed Close anchor and show directional image changes. */
.image-viewer-prev,.image-viewer-next{position:absolute;bottom:16px;z-index:3;min-width:72px;min-height:44px;padding:12px;font:400 10px/1.4 Arial,Helvetica,sans-serif;letter-spacing:1px;transition:color .3s ease}
.image-viewer-prev{left:3%}.image-viewer-next{right:3%}
.image-viewer-prev:hover,.image-viewer-next:hover{color:#e27a74}
.image-viewer-prev[hidden],.image-viewer-next[hidden]{display:none}
.image-viewer-caption{left:calc(3% + 94px);right:calc(3% + 94px);bottom:29px}
.image-viewer-stage{padding-bottom:80px}
#image-viewer .image-viewer-image{transform:translateX(calc(var(--viewer-direction,1)*36px)) scale(.985);transition:opacity .4s ease,transform .65s cubic-bezier(.22,1,.36,1)}
#image-viewer.is-ready .image-viewer-image{transform:translateX(0) scale(1)}
#image-viewer.is-switching .image-viewer-image{opacity:0;transform:translateX(calc(var(--viewer-direction,1)*-30px)) scale(.985);transition-duration:.22s}
@media(max-width:600px){.image-viewer-caption{bottom:30px;font-size:8px}.image-viewer-prev,.image-viewer-next{font-size:9px;bottom:14px}.image-viewer-stage{padding:56px 10px 80px}}
@media(prefers-reduced-motion:reduce){#project-images .gallery-image-trigger,#image-viewer .image-viewer-image,#image-viewer.is-switching .image-viewer-image{transform:none!important;transition:none!important}}
#project-dialog[open] .project-hero-video{animation:none}
@media(prefers-reduced-motion:reduce){#project-dialog[open] .project-hero-video{animation:none!important}}

/* Desktop transitions retain a stable viewport instead of interpolating its size. */
@media(min-width:601px){
 ::view-transition-group(root){animation:none}
 html:has(body[data-page="work"]){scrollbar-gutter:stable}
 /* The native image dialog makes its parent inert; keep the parent's scrollbar
    in place rather than changing its content width during the image view. */
 .project-scroll,.project-scroll.image-viewing{overflow-y:scroll;scrollbar-gutter:stable}
 #project-dialog[open]{animation:desktop-project-enter .6s cubic-bezier(.16,1,.3,1) both}
 #project-dialog[open] .project-hero-image{animation:desktop-hero-enter 1.1s cubic-bezier(.22,1,.36,1) both}
 .project-detail .project-image{transform:translate(var(--image-entry-x,-45px),36px)}
 .project-detail .project-image.is-loaded.is-visible{transform:translate(0,0)}
 #image-viewer .image-viewer-image{width:100%;height:100%;max-width:100%;max-height:100%;object-fit:contain;transform:translateX(calc(var(--viewer-direction,1)*36px))}
 #image-viewer.is-ready .image-viewer-image{transform:translateX(0)}
 #image-viewer.is-switching .image-viewer-image{transform:translateX(calc(var(--viewer-direction,1)*-30px))}
 #image-viewer.is-closing .image-viewer-image{transform:translateY(16px)}
}
@keyframes desktop-project-enter{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
@keyframes desktop-hero-enter{from{opacity:0;transform:translateX(18px)}to{opacity:1;transform:none}}
@media(min-width:601px) and (prefers-reduced-motion:reduce){#project-dialog[open],#project-dialog[open] .project-hero-image{animation:none!important}.project-detail .project-image,.project-detail .project-image.is-loaded.is-visible{transform:none!important}}
