:root{--bg:#101010;--fg:#ecebe8;--muted:#a1a09b;--line:#ffffff25;--serif:'Bodoni Moda',Georgia,serif;--sans:'Inter',Arial,sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:110px}body{margin:0;background:var(--bg);color:var(--fg);font:16px/1.7 var(--sans);-webkit-font-smoothing:antialiased}h1,h2,h3,p,figure{margin:0}h1,h2,h3{font-weight:400}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;border:0;background:none;cursor:pointer}a,button,summary{-webkit-tap-highlight-color:transparent}a:focus-visible,button:focus-visible,summary:focus-visible{outline:2px solid white;outline-offset:6px}::selection{background:#ddd;color:#111}img{display:block;width:100%}.site-header{position:fixed;inset:0 0 auto;z-index:40;display:flex;align-items:center;justify-content:space-between;gap:25px;padding:23px 4%;transition:background .5s,padding .5s}.site-header.scrolled{background:#101010eb;backdrop-filter:blur(14px);padding-top:13px;padding-bottom:13px}.brand{font:30px/.9 var(--serif);letter-spacing:-3px}nav{display:flex;gap:32px}nav a{font-size:13px;padding:8px 0;position:relative}nav a:after{content:'';position:absolute;left:0;bottom:4px;width:0;height:1px;background:#ddd;transition:width .4s}nav a:hover:after{width:100%}.controls{display:flex;align-items:center;gap:30px}.languages{display:flex;gap:9px;align-items:center;font-size:12px}.languages a{padding:10px 0;opacity:.5;font-size:12px}.languages a[aria-current=page]{opacity:1}.languages span{opacity:.3}#motion-toggle{font-size:12px;border-bottom:1px solid #ffffff55;padding:10px 0;min-height:44px}.skip{position:fixed;top:-80px;left:15px;background:#fff;color:#000;padding:12px;z-index:80}.skip:focus{top:10px}.hero{height:180svh;min-height:1100px;position:relative}.hero-stage{position:sticky;top:0;height:100svh;min-height:620px;overflow:hidden;isolation:isolate;background:#111}.hero-image{position:absolute;inset:0;height:100%;width:100%;object-fit:cover;object-position:60% 42%;will-change:transform,opacity;animation:photo-enter 1.8s}.hero-shade{position:absolute;inset:0;background:linear-gradient(90deg,#0007,transparent 70%),linear-gradient(0deg,#0009,transparent 60%)}.hero-title{position:absolute;left:5%;bottom:120px;z-index:2}.hero h1{font:400 clamp(85px,14vw,250px)/.9 var(--serif);letter-spacing:-.055em}.hero h1>span{display:block;white-space:nowrap}.hero h1 .letter{display:inline-block;will-change:transform,opacity,filter;backface-visibility:hidden}.hero h1 small{display:block;font:400 clamp(13px,1.4vw,22px)/1.5 var(--sans);letter-spacing:.2em;margin-top:33px;padding-left:5px}.hero-bottom{position:absolute;inset:auto 4% 30px;z-index:3;display:flex;justify-content:space-between;gap:20px;font-size:12px;letter-spacing:.045em}.hero-bottom a{padding-bottom:7px;border-bottom:1px solid #ffffff66}.hero-bottom span{font-size:11px}.intro{padding:135px 9% 100px}.eyebrow{font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}.manifesto{font:400 clamp(48px,9vw,150px)/1.08 var(--serif);letter-spacing:-.055em;margin:55px 0;text-transform:uppercase}.intro-foot{display:flex;justify-content:flex-end}.intro-foot p{font-size:16px;color:var(--muted);max-width:420px}.works{padding:0 8% 150px}.gallery{display:grid;grid-template-columns:1fr 1fr;column-gap:12%;row-gap:120px;align-items:start}.photo{min-width:0}.photo:nth-child(even){padding-top:150px}.photo:nth-child(5),.photo:nth-child(9){grid-column:1/-1;padding:0 12%}.photo:nth-child(6),.photo:nth-child(12){padding-top:0}.photo:nth-child(7),.photo:nth-child(13){padding-top:150px}.photo:nth-child(8),.photo:nth-child(14){padding-top:0}.photo:nth-child(9){padding-top:140px}.photo:nth-child(10){padding-top:0}.photo .photo-link{display:block;width:100%;padding:0;overflow:hidden;cursor:zoom-in;clip-path:inset(0);transition:clip-path 1.5s cubic-bezier(.2,.7,.2,1);background:#191919}.photo img{height:auto;transition:transform 1.6s cubic-bezier(.2,.7,.2,1)}.photo .photo-link:hover img{transform:scale(1.035)}.photo.waiting button{clip-path:inset(10% 0 0 0)}.about{padding:110px 9% 120px;background:#151515}.about-grid{display:grid;grid-template-columns:1fr 1fr;gap:11%;margin-top:65px}.about h2{font:400 clamp(46px,6.5vw,105px)/1.14 var(--serif);letter-spacing:-.045em}.about h2 em{font-weight:400;color:#aaa}.bio p{margin-bottom:26px;font-size:16px;line-height:1.95;color:#aaa}.bio .lead{font-size:24px;line-height:1.6;color:#eee}.cv{margin-top:80px;border-top:1px solid var(--line)}.cv summary{cursor:pointer;list-style:none;padding:28px 0;display:flex;justify-content:space-between;gap:25px;font-size:14px}.cv summary::-webkit-details-marker{display:none}.details-icon{font-size:23px;line-height:1}.cv[open] .details-icon{transform:rotate(45deg)}.cv-list{display:grid;grid-template-columns:1fr 1fr;gap:0 8%;padding:0 0 20px}.cv-row{border-top:1px solid var(--line);padding:22px 0}.cv-row h3{font-size:16px}.cv-row p{font-size:13px;color:var(--muted);margin-top:7px}.interlude{position:relative;width:100%;overflow:hidden;background:#080808;aspect-ratio:2048/1495}.interlude img{height:100%;width:100%;object-fit:cover;object-position:center top;will-change:transform;transform-origin:center top}.contact{padding:100px 9% 90px}.locations{display:flex;justify-content:space-between;gap:30px;margin-top:45px;font:400 clamp(35px,6.5vw,110px)/1.2 var(--serif);letter-spacing:-.04em}footer{margin:0 4%;border-top:1px solid var(--line);display:flex;justify-content:space-between;gap:20px;padding:28px 0;font-size:12px;color:var(--muted)}dialog{position:fixed;inset:0;width:100vw;max-width:none;height:100dvh;max-height:none;border:0;margin:0;padding:18px 3%;background:#080808;color:#eee;overflow:hidden}dialog::backdrop{background:#080808}dialog[open]{display:flex;flex-direction:column}.viewer-top{display:flex;justify-content:flex-end}.viewer-bottom{display:flex;justify-content:space-between;gap:30px}.viewer-top button,.viewer-bottom button{font-size:13px;padding:14px;min-height:46px}.viewer-image{flex:1;min-height:0;display:flex;align-items:center;justify-content:center;padding:10px 0}.viewer-image img{width:100%;height:100%;object-fit:contain}.reveal{transition:opacity 1.3s,transform 1.5s cubic-bezier(.2,.7,.2,1)}.js-motion .reveal.waiting{opacity:0;transform:translateY(65px)}@keyframes photo-enter{from{opacity:0}to{opacity:1}}[data-motion=off] .hero{height:100svh;min-height:620px}[data-motion=off] .hero-stage{position:relative}[data-motion=off] *,[data-motion=off] *:before,[data-motion=off] *:after{animation:none!important;transition:none!important}html[data-motion=off]{scroll-behavior:auto}[data-motion=off] .reveal.waiting{opacity:1;transform:none}[data-motion=off] .photo.waiting button{clip-path:none}
@media(min-width:1900px){.works,.about,.intro,.contact{padding-left:max(9%,calc((100vw - 1550px)/2));padding-right:max(9%,calc((100vw - 1550px)/2))}}
@media(max-width:900px){.site-header{gap:18px}nav{gap:19px}.controls{gap:18px}.hero h1{font-size:17vw}.hero-title{bottom:125px}.hero-image{object-position:64% center}.gallery{column-gap:8%;row-gap:85px}.photo:nth-child(even){padding-top:90px}.photo:nth-child(6),.photo:nth-child(8),.photo:nth-child(10),.photo:nth-child(12),.photo:nth-child(14){padding-top:0}.photo:nth-child(7),.photo:nth-child(9),.photo:nth-child(13){padding-top:90px}.about-grid{gap:7%}.bio .lead{font-size:20px}.about h2{font-size:55px}.intro,.about,.contact{padding:90px 7%}.works{padding:0 7% 100px}.cv{margin-top:50px}.interlude{aspect-ratio:2048/1495}}
@media(max-width:600px){.site-header{padding:13px 5%;flex-wrap:wrap;gap:8px 15px;background:#101010a6;backdrop-filter:blur(10px)}.site-header.scrolled{padding:10px 5%}.brand{font-size:27px;width:35px}nav{gap:16px}nav a{font-size:12px}.controls{width:100%;justify-content:space-between;border-top:1px solid #ffffff20;gap:12px}.controls #motion-toggle{font-size:11px;min-height:36px;padding:5px 0}.languages a{padding:6px 0;font-size:12px}.hero{height:165svh;min-height:1080px}.hero-stage{height:100svh;min-height:650px}.hero-image{object-position:64% center}.hero-title{left:6%;bottom:125px}.hero h1{font-size:22vw;line-height:.99}.hero h1 small{font-size:12px;letter-spacing:.14em;margin-top:24px}.hero-bottom{left:6%;right:6%;bottom:27px;font-size:11px;align-items:center}.hero-bottom span{font-size:9px}.intro{padding-top:80px}.manifesto{font-size:13vw;margin:42px 0}.intro-foot{justify-content:flex-start}.intro-foot p{font-size:15px}.gallery{grid-template-columns:1fr;row-gap:65px}.photo:nth-child(n){grid-column:auto;padding:0;width:100%;justify-self:center}.photo:nth-child(3n+2){width:82%;justify-self:end}.photo:nth-child(3n){width:92%;justify-self:start}.photo:nth-child(5),.photo:nth-child(9){width:100%}.about-grid{grid-template-columns:1fr;margin-top:40px;gap:35px}.about h2{font-size:15vw}.bio .lead{font-size:22px}.bio p{font-size:16px}.cv-list{grid-template-columns:1fr}.cv summary{font-size:13px}.cv-row h3{font-size:15px}.locations{flex-direction:column;gap:5px;font-size:15vw}.contact{padding-top:70px;padding-bottom:75px}.interlude{aspect-ratio:2048/1495}.interlude img{object-fit:contain}.eyebrow{font-size:11px}footer{font-size:10px;padding:25px 2%}.viewer-bottom button{font-size:12px}}
@media(max-height:650px) and (min-width:601px){.hero-stage{min-height:480px}.hero-title{bottom:90px}.hero h1{font-size:22vh}.hero h1 small{margin-top:18px}.hero-bottom{bottom:20px}}

/* Exhibition chronology and direct contact */
.timeline{padding:110px 9% 100px;background:#151515}.timeline>h2{font:400 clamp(58px,9vw,140px)/1.15 var(--serif);letter-spacing:-.045em;margin:35px 0 70px}.timeline-list{list-style:none;margin:0;padding:0}.timeline-row{display:grid;grid-template-columns:150px 1fr;gap:40px;padding:32px 0;border-top:1px solid var(--line)}.timeline-row time{font:400 48px/1.1 var(--serif);letter-spacing:-.045em;color:var(--muted)}.timeline-row h3,.timeline-archive h3{font:400 clamp(25px,3vw,44px)/1.25 var(--serif)}.timeline-row p,.timeline-archive p{max-width:680px;font-size:14px;line-height:1.9;color:var(--muted);margin-top:12px}.timeline-archive{border-top:1px solid var(--line);padding:38px 0 0 190px}.contact-links{display:flex;flex-direction:column;align-items:flex-start;gap:24px;margin-top:45px}.contact-links a{font:400 clamp(25px,5.5vw,88px)/1.25 var(--serif);letter-spacing:-.035em;overflow-wrap:anywhere;max-width:100%;text-decoration-thickness:1px;text-underline-offset:.15em}.contact-links a:hover{text-decoration:underline}.contact-links a:last-child{color:var(--muted)}
@media(min-width:1900px){.timeline{padding-left:max(9%,calc((100vw - 1550px)/2));padding-right:max(9%,calc((100vw - 1550px)/2))}}
@media(max-width:900px){.timeline{padding:90px 7%}.timeline-row{grid-template-columns:110px 1fr;gap:25px}.timeline-archive{padding-left:135px}}
@media(max-width:600px){.timeline{padding:70px 7%}.timeline>h2{margin-bottom:45px}.timeline-row{grid-template-columns:65px 1fr;gap:20px;padding:27px 0}.timeline-row time{font-size:31px}.timeline-row h3,.timeline-archive h3{font-size:26px}.timeline-row p,.timeline-archive p{font-size:13px}.timeline-archive{padding-left:0}.contact-links{gap:20px}.contact-links a{font-size:7.1vw}}

/* Scroll-driven movement: stable layout anchors, transform-only animation. */
body{overflow-x:clip}.photo .photo-link{transform-origin:center center}.js-motion .photo .photo-link,.js-motion .photo img,.js-motion .timeline-row>div{transition:none}.js-motion .photo .photo-link:hover img{transform:none}.timeline-row{overflow:clip}.hero-image{transform-origin:60% 28%}[data-motion=off] .photo .photo-link,[data-motion=off] .photo img,[data-motion=off] .timeline-row>div{transform:none!important;opacity:1!important}

/* Large, slowly expanding photographs with a sustained scroll stage. */
.hero{height:230svh}.hero-image{object-position:center 30%}.controls{gap:0}.reveal{transition-duration:2.2s,2.5s}.works{padding:0 0 8svh}.gallery{display:block}.gallery .photo:nth-child(n){position:relative;display:block;width:100%;height:175svh;padding:0;margin:0;overflow:visible}.gallery .photo .photo-link{position:sticky;top:10svh;width:94%;height:82svh;margin:0 auto;overflow:visible;background:transparent;clip-path:none;transform-origin:center center}.gallery .photo img{width:100%;height:100%;object-fit:contain;transform:none;transition:none}.interlude{height:190svh;aspect-ratio:auto;overflow:visible}.interlude img{position:sticky;top:10svh;height:82svh;width:100%;object-fit:contain;transform-origin:center 35%}.hero h1 .letter{will-change:auto}
@media(max-width:600px){.hero{height:210svh}.hero-image{object-position:center 28%}.controls{width:auto;border:0}.gallery .photo:nth-child(n){height:155svh}.gallery .photo .photo-link{top:12svh;height:78svh;width:98%}.interlude{height:170svh}.interlude img{top:12svh;height:78svh;object-fit:contain}.hero-stage{min-height:620px}}

/* Asymmetric portfolio: no more than two photographs per row. */
.works{padding:25px 7% 140px}.gallery{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);column-gap:12%;row-gap:130px;align-items:start}.gallery .photo:nth-child(n){position:relative;grid-column:auto;height:auto;width:100%;padding:0;margin:0;justify-self:center;overflow:visible}.gallery .photo:nth-child(even){margin-top:180px;width:88%;justify-self:end}.gallery .photo:nth-child(4n+1){width:88%;justify-self:start}.gallery .photo:nth-child(5),.gallery .photo:nth-child(9){grid-column:1/-1;width:83%;margin:20px 0 50px;justify-self:center}.gallery .photo:nth-child(6),.gallery .photo:nth-child(12){margin-top:0;justify-self:start}.gallery .photo:nth-child(7),.gallery .photo:nth-child(13){margin-top:150px;justify-self:end}.gallery .photo .photo-link{position:relative;top:auto;width:100%;height:auto;margin:0;transform-origin:center center}.gallery .photo img{width:100%;height:auto;object-fit:contain}
@media(min-width:1900px){.works{padding-left:max(7%,calc((100vw - 1600px)/2));padding-right:max(7%,calc((100vw - 1600px)/2))}}
@media(max-width:900px){.works{padding:15px 6% 100px}.gallery{column-gap:10%;row-gap:95px}.gallery .photo:nth-child(even),.gallery .photo:nth-child(7),.gallery .photo:nth-child(13){margin-top:110px}.gallery .photo:nth-child(6),.gallery .photo:nth-child(12){margin-top:0}}
@media(max-width:600px){.works{padding:10px 6% 90px}.gallery{grid-template-columns:minmax(0,1fr);row-gap:95px}.gallery .photo:nth-child(n){grid-column:auto;width:94%;height:auto;margin:0;padding:0;justify-self:center}.gallery .photo:nth-child(3n+2){width:82%;justify-self:end}.gallery .photo:nth-child(3n){width:88%;justify-self:start}.gallery .photo:nth-child(5),.gallery .photo:nth-child(9){width:100%}.gallery .photo .photo-link{position:relative;top:auto;width:100%;height:auto}}

/* Compact closing portrait on phones/tablets: natural height, no scroll spacer. */
@media(max-width:900px){.interlude{height:auto;min-height:0;aspect-ratio:auto;overflow:hidden;margin:0;padding:0}.interlude img{position:relative;top:auto;display:block;width:100%;height:auto;max-height:none;object-fit:contain;transform-origin:center top;will-change:transform}}

/* Stable bilingual navigation and a viewport without horizontal overflow. */
html,body{width:100%;max-width:100%;overflow-x:clip;overscroll-behavior-x:none}main{width:100%;min-width:0}.site-header,nav,.controls,.about-grid>*,.timeline-row>*,.hero-bottom>*{min-width:0}.site-header nav{display:grid;grid-template-columns:112px 72px 96px 82px;gap:12px}.site-header nav a{display:block;text-align:center;white-space:nowrap}.languages{display:grid;grid-template-columns:26px 8px 26px;gap:6px;text-align:center}.languages a{width:26px}.bio,.cv-row,.timeline-row>div,.timeline-archive{overflow-wrap:anywhere}
@supports not (overflow:clip){html{overflow-x:hidden}}
@media(max-width:600px){.site-header,.site-header.scrolled{display:grid;grid-template-columns:40px minmax(0,1fr) 72px;grid-template-rows:32px 40px;gap:4px 10px;padding:9px 5% 7px;align-items:center}.site-header .brand{grid-column:1;grid-row:1;width:35px}.site-header .controls{grid-column:3;grid-row:1;width:72px;justify-self:end;border:0;gap:0}.site-header nav{grid-column:1/-1;grid-row:2;display:grid;grid-template-columns:1.3fr 1fr 1fr;width:100%;gap:8px;border-top:1px solid var(--line);height:40px;align-items:center}.site-header nav a{font-size:12px;line-height:20px;padding:9px 0}.site-header .languages{width:72px;gap:6px}.site-header .languages a{font-size:12px;line-height:20px;padding:6px 0}.site-header.scrolled{padding-top:9px;padding-bottom:7px}.hero-bottom{flex-wrap:wrap;row-gap:8px}.hero-bottom a{max-width:100%}footer>*{min-width:0;overflow-wrap:anywhere}}

/* Compact navigation with an animated hamburger on phones and tablets. */
.menu-toggle{display:none}
@media(max-width:1024px){
 .site-header.nav-ready,.site-header.nav-ready.scrolled{display:grid;grid-template-columns:minmax(35px,1fr) 72px 44px;grid-template-rows:44px;gap:16px;padding:10px 5%;background:#101010ed;backdrop-filter:blur(16px)}
 .site-header.nav-ready .brand{grid-column:1;grid-row:1;width:35px}
 .site-header.nav-ready .controls{grid-column:2;grid-row:1;width:72px;border:0;gap:0;justify-self:end}
 .site-header.nav-ready .menu-toggle{display:grid;grid-column:3;grid-row:1;place-items:center;width:44px;height:44px;padding:0;margin:0;line-height:0;appearance:none;-webkit-appearance:none;border:0;border-radius:0;box-shadow:none;background:transparent;z-index:2}
 /* One SVG coordinate system keeps all strokes aligned at every pixel density. */
 .menu-toggle .menu-icon{display:block;width:24px;height:24px;overflow:visible;pointer-events:none}
 .menu-toggle .menu-line{transform-box:view-box;transform-origin:12px 12px;transition:transform .25s ease,opacity .15s ease}
 .menu-toggle .menu-line-top{transform:translateY(-6px)}
 .menu-toggle .menu-line-bottom{transform:translateY(6px)}
 .menu-toggle[aria-expanded=true] .menu-line-top{transform:rotate(45deg)}
 .menu-toggle[aria-expanded=true] .menu-line-middle{opacity:0}
 .menu-toggle[aria-expanded=true] .menu-line-bottom{transform:rotate(-45deg)}
 .site-header.nav-ready nav{position:absolute;inset:100% 0 auto;display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:repeat(4,64px);gap:0;width:100%;height:auto;max-height:calc(100dvh - 64px);overflow-y:auto;padding:20px 7% 28px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);background:#101010fa;box-shadow:0 20px 35px #0004;opacity:0;visibility:hidden;transform:translateY(-10px);pointer-events:none;transition:opacity .3s,transform .4s,visibility .4s}
 .site-header.nav-ready nav a{display:flex;align-items:center;justify-content:flex-start;height:64px;padding:12px 0;border-bottom:1px solid var(--line);font:400 clamp(28px,5vw,42px)/1.2 var(--serif);text-align:left;white-space:nowrap}
 .site-header.nav-ready nav a:after{display:none}
 .site-header.nav-ready.menu-open nav{opacity:1;visibility:visible;transform:translateY(0);pointer-events:auto}
}

/* Quieter opening, prompt navigation and more legible secondary text. */
:root{--muted:#c0bfba}html{scroll-behavior:auto}.hero{height:155svh;min-height:900px}.bio p{color:#c0bfba}.about h2 em{color:#c0bfba}.reveal{transition-duration:.45s,.6s}.contact-invitation{font-size:clamp(18px,2vw,25px);line-height:1.65;max-width:650px;margin-top:35px;color:var(--fg)}.nav-arrived .reveal,.nav-arrived.reveal,.nav-arrived .reveal.waiting{opacity:1!important;transform:none!important;transition:none!important}.eyebrow{line-height:1.6}footer{font-size:12px}
@media(max-width:600px){.hero{height:145svh;min-height:850px}.eyebrow{font-size:12px}footer{font-size:12px}.hero-bottom span{font-size:11px}}

/* Keep the photographer's name below the face, in one restrained line. */
.hero-title{left:5%;right:5%;bottom:92px;max-width:90%}.hero h1{font-size:clamp(42px,6.4vw,108px);line-height:1.05;letter-spacing:-.035em}.hero h1>span{display:inline-block;white-space:nowrap}.hero h1>span+span{margin-left:.22em}.hero h1 small{font-size:13px;line-height:1.5;letter-spacing:.16em;margin-top:16px;padding-left:2px}
@media(max-width:900px){.hero h1{font-size:8vw}.hero-title{bottom:96px}}
@media(max-width:600px){.hero-title{left:6%;right:6%;bottom:98px;max-width:88%}.hero h1{font-size:9vw;line-height:1.1}.hero h1 small{font-size:11px;letter-spacing:.12em;margin-top:13px}}
@media(max-height:500px) and (min-width:601px){.hero-stage{min-height:0}.hero-title{bottom:74px}.hero h1{font-size:clamp(30px,5vw,64px)}.hero h1 small{margin-top:10px;font-size:11px}.hero-bottom{bottom:20px}}

/* One responsive type scale for all headings. */
:root{--heading-size:clamp(42px,6.4vw,108px)}
.hero h1,main h2{font-size:var(--heading-size)!important;line-height:1.12;letter-spacing:-.035em;text-transform:none!important;overflow-wrap:anywhere}
.cv-list{grid-template-columns:minmax(0,1fr)}.cv-row h3{font-family:var(--serif)}.timeline-row>div{min-width:0}.timeline-period{font:400 clamp(21px,2.3vw,34px)/1.4 var(--serif);color:var(--muted)}.recognition-links{display:flex;flex-wrap:wrap;gap:12px 26px;margin-top:20px}.recognition-links a{font-size:14px;text-decoration:underline;text-underline-offset:5px;line-height:1.8}.recognition-links a:hover{color:#fff}
@media(max-width:900px){:root{--heading-size:8vw}}
@media(max-width:600px){:root{--heading-size:9vw}.timeline-period{font-size:20px;overflow-wrap:normal}.timeline-row:has(.timeline-period){grid-template-columns:minmax(0,1fr);gap:12px}}
@media(max-height:500px) and (min-width:601px){:root{--heading-size:clamp(30px,5vw,64px)}}

/* Calm photographic opening: no pinning, letter movement or fade. */
.hero{height:100svh;min-height:560px}.hero-stage{position:relative;height:100%;min-height:0}.hero-image{animation:none;opacity:1!important}.hero h1{opacity:1;transform:none;filter:none}
.timeline-period{display:flex;flex-direction:column;align-items:flex-start;gap:0}.period-connector{display:block;height:44px;border-left:2px dotted var(--muted);margin:16px 0 16px 12px}
@media(max-width:600px){.hero{height:100svh;min-height:560px}.timeline-row:has(.timeline-period){grid-template-columns:65px minmax(0,1fr);gap:20px}.period-connector{height:34px;margin:13px 0 13px 8px}}
@media(max-height:500px) and (min-width:601px){.hero{min-height:380px}}

/* Two related portraits form a deliberate pair, including on small screens. */
.gallery .photo.portrait-pair:nth-child(n){width:100%;margin:0;padding:0;justify-self:stretch;align-self:start}
@media(max-width:600px){.gallery{grid-template-columns:minmax(0,1fr) minmax(0,1fr);column-gap:8%}.gallery .photo:nth-child(n){grid-column:1/-1}.gallery .photo.portrait-pair:nth-child(n){grid-column:auto;width:100%;margin:0;padding:0}}

.gallery .photo[data-center-zoom=true]{z-index:2}.gallery .photo[data-center-zoom=true] .photo-link{transform-origin:center 30%}

/* Faster browsing without hidden photographs or long empty spacers. */
.gallery{row-gap:80px}.gallery .photo:nth-child(even){margin-top:110px}.gallery .photo:nth-child(7),.gallery .photo:nth-child(13){margin-top:90px}.gallery .photo:nth-child(6),.gallery .photo:nth-child(12),.gallery .photo.portrait-pair:nth-child(n){margin-top:0}.gallery .photo:nth-child(5),.gallery .photo:nth-child(9){margin:10px 0 20px}.intro{padding-top:85px;padding-bottom:65px}.works{padding-bottom:85px}.interlude{height:auto;min-height:0;aspect-ratio:auto;overflow:hidden;padding:0;margin:0}.interlude img{position:relative;top:auto;display:block;width:100%;height:auto;object-fit:contain;transform-origin:center top}.reveal{transition-duration:.25s,.35s}
@media(max-width:900px){.gallery{row-gap:65px}.gallery .photo:nth-child(even){margin-top:85px}.gallery .photo:nth-child(6),.gallery .photo:nth-child(12),.gallery .photo.portrait-pair:nth-child(n){margin-top:0}}
@media(max-width:600px){.gallery{row-gap:48px}.gallery .photo:nth-child(n){margin:0}.intro{padding-top:55px;padding-bottom:45px}.works{padding-bottom:60px}}

/* Photograph animations never leave their separate grid footprints. */
.gallery .photo:nth-child(n){overflow:hidden;overflow:clip}.gallery .photo .photo-link,.gallery .photo[data-center-zoom=true] .photo-link{transform-origin:center center}

/* Short pinned opening: the photograph holds while the zoom stays on the eyes. */
.hero{height:165svh;min-height:850px}.hero-stage{position:sticky;top:0;height:100svh;min-height:0}.hero-image{object-position:50% 30%}
@media(max-width:600px){.hero{height:155svh;min-height:780px}.hero-stage{height:100svh}.hero-image{object-position:50% 30%}}
@media(max-height:500px) and (min-width:601px){.hero{height:165svh;min-height:620px}.hero-stage{height:100svh}}

/* These solo portraits have room to travel to the page centre safely. */
.gallery .photo[data-center-solo=true]:nth-child(n){grid-column:1/-1;width:100%;margin:0;justify-self:stretch}.gallery .photo[data-center-solo=true] .photo-link{width:60%;margin:0 auto}
@media(max-width:600px){.gallery .photo[data-center-solo=true] .photo-link{width:90%}}

/* Biography v22: independent type scale, legible mobile rows and static content. */
.visually-hidden{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
h1,h2,h3,h4{word-break:normal;overflow-wrap:normal}
h4{font-weight:400;margin:0}
p{text-wrap:pretty}
:lang(cs) p{hyphens:none}
:lang(cs) h1,:lang(cs) h2,:lang(cs) h3,:lang(cs) h4{hyphens:none}
.languages a{display:block;min-height:44px;line-height:24px;padding:10px 0;text-align:center;opacity:.72;font-size:12px;width:26px}
.languages a[aria-current=page]{opacity:1;text-decoration:underline;text-underline-offset:5px}
.site-header nav a{min-height:44px}
.intro{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,.7fr);gap:5%;align-items:center}
.intro-copy{min-width:0}.intro .manifesto{margin:30px 0}.intro-foot{justify-content:flex-start}
.author-portrait{width:100%;max-width:360px;justify-self:center;overflow:hidden}
.author-portrait img{height:auto;filter:grayscale(1);mask-image:linear-gradient(to right,transparent,#000 16%,#000 84%,transparent),linear-gradient(to bottom,transparent,#000 14%,#000 79%,transparent);mask-composite:intersect;-webkit-mask-image:linear-gradient(to right,transparent,#000 16%,#000 84%,transparent),linear-gradient(to bottom,transparent,#000 14%,#000 79%,transparent);-webkit-mask-composite:source-in}
.timeline{padding-block:80px;overflow:visible}
.timeline>h2{font-size:clamp(36px,5.5vw,76px)!important;margin:24px 0 40px;line-height:1.12}
.timeline-list{position:relative}
.timeline-row{position:relative;grid-template-columns:5.5rem minmax(0,1fr);column-gap:32px;padding:22px 0;overflow:visible;align-items:start;border-top:1px solid var(--line)}
.timeline-row .timeline-year{font:400 clamp(23px,2.3vw,32px)/1.25 var(--serif);font-variant-numeric:lining-nums tabular-nums;white-space:nowrap;word-break:normal;overflow-wrap:normal;letter-spacing:-.025em;display:block;color:var(--fg)}
.timeline-row article{position:relative;min-width:0;padding-left:22px;border-left:1px dotted #ffffff45;}
.timeline-row article::before{content:'';position:absolute;left:-3px;top:10px;width:5px;height:5px;background:#b5b3ad;border-radius:50%}
.timeline-row h3{font:400 clamp(21px,2.15vw,30px)/1.3 var(--serif);letter-spacing:-.015em;text-wrap:pretty}
.timeline-row p,.timeline-archive p{font-size:14px;line-height:1.7;color:#c5c3be;margin-top:7px;max-width:66ch;overflow-wrap:normal;word-break:normal}
.source-link{display:inline-block;font-size:12px;line-height:1.5;padding:12px 0 5px;text-decoration:underline;text-underline-offset:4px;color:#d2d0ca;min-height:36px}
.source-link:hover{color:#fff}
.timeline-archive{padding:38px 0 0;margin-top:8px}
.timeline-archive>h3{font:400 clamp(23px,2.8vw,36px)/1.3 var(--serif);max-width:28ch;margin-bottom:22px}
.archive-list{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);column-gap:48px}
.archive-list li{border-top:1px solid var(--line);padding:20px 0;min-width:0}
.archive-list h4{font:400 clamp(20px,2vw,27px)/1.3 var(--serif);text-wrap:pretty}
.cv-list{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
.cv-row{min-width:0;overflow-wrap:normal}
.cv-row h3{font:400 clamp(19px,1.9vw,26px)/1.35 var(--serif)}
.contact h2.eyebrow{font:400 12px/1.6 var(--sans)!important;letter-spacing:.14em;text-transform:uppercase!important}
.gallery .photo-link{display:block;color:inherit;cursor:zoom-in;background:transparent}
.gallery .photo-link:focus-visible{outline-offset:-3px}
@media(max-width:900px){.intro{grid-template-columns:minmax(0,1.2fr) minmax(0,.8fr);gap:2%}.timeline-row{column-gap:20px}.archive-list{column-gap:28px}}
@media(max-width:600px){
 .intro{grid-template-columns:minmax(0,1fr);gap:18px}.author-portrait{width:min(80%,260px);max-width:260px}.intro .manifesto{margin:24px 0}
 .timeline{padding:54px 6%}.timeline>h2{font-size:36px!important;margin-bottom:28px}
 .timeline-row{grid-template-columns:3.75rem minmax(0,1fr);gap:12px;padding:18px 0}.timeline-row article{padding-left:14px}.timeline-row h3{font-size:21px}.timeline-row .timeline-year{font-size:23px}
 .timeline-row p,.timeline-archive p{font-size:14px;line-height:1.65}.timeline-archive{padding-top:26px}.archive-list{grid-template-columns:minmax(0,1fr)}.archive-list li{padding:17px 0}
 .cv-list{grid-template-columns:minmax(0,1fr)}.cv-row h3{font-size:21px}
}
@media(max-width:360px){.timeline-row{grid-template-columns:3.75rem minmax(0,1fr);gap:8px}.timeline-row article{padding-left:10px}.timeline-row h3{font-size:20px}}


/* Revision 23: atmospheric author image and restored section movement. */
.author-portrait img{opacity:.27;filter:grayscale(1) brightness(.75);mask-image:radial-gradient(ellipse 52% 48% at 50% 48%,#000 5%,#000b 27%,#0005 54%,transparent 88%);-webkit-mask-image:radial-gradient(ellipse 52% 48% at 50% 48%,#000 5%,#000b 27%,#0005 54%,transparent 88%);mask-composite:add;-webkit-mask-composite:source-over}
.reveal{transition:opacity .85s ease,transform 1.1s cubic-bezier(.2,.7,.2,1)}
.js-motion .reveal.waiting{opacity:.24;transform:translateY(24px) scale(.985)}
.js-motion .timeline-row article,.js-motion .archive-list article{transition:none;transform-origin:left center}
[data-motion=off] .timeline-row article,[data-motion=off] .archive-list article{transform:none!important;opacity:1!important}

/* Revision 24: larger author cutout, no light exhibition background. */
.intro{grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);gap:4%}
.author-portrait{width:100%;max-width:560px}
.author-portrait img{opacity:.34;filter:grayscale(1) brightness(.8);mask-image:radial-gradient(ellipse 72% 70% at 50% 43%,#000 16%,#000c 48%,transparent 86%);-webkit-mask-image:radial-gradient(ellipse 72% 70% at 50% 43%,#000 16%,#000c 48%,transparent 86%)}
@media(max-width:600px){.intro{grid-template-columns:minmax(0,1fr);gap:24px}.author-portrait{width:100%;max-width:400px}}

/* Revision 25: motion matches the live v21 site, always enabled. */
.reveal{transition:opacity .25s,transform .35s cubic-bezier(.2,.7,.2,1)}
.js-motion .reveal.waiting{opacity:0;transform:translateY(65px)}
.timeline-row,.archive-list li{overflow:clip}

/* Revision 26: author photograph removed; restore a full-width text introduction. */
.intro{display:block}.intro-copy{width:100%;max-width:1100px}.intro .manifesto{margin:36px 0}.intro-foot{justify-content:flex-end}
@media(max-width:600px){.intro .manifesto{margin:26px 0}.intro-foot{justify-content:flex-start}}

/* Revision 27: keep the longer human-being headings readable. */
.intro .manifesto{max-width:16ch;text-wrap:balance}.about h2{font-size:clamp(36px,5vw,80px)!important;overflow-wrap:normal;text-wrap:balance}
@media(max-width:600px){.about h2{font-size:clamp(32px,9vw,48px)!important}}

/* Revision 30: compact biography, with older entries in a native disclosure. */
.biography-history{margin-top:8px;border-top:1px solid var(--line)}
.biography-history>summary{display:flex;align-items:center;justify-content:space-between;gap:24px;min-height:64px;padding:20px 0;cursor:pointer;list-style:none;font:400 clamp(19px,2vw,26px)/1.4 var(--serif)}
.biography-history>summary::-webkit-details-marker{display:none}
.biography-history>summary::marker{content:""}
.history-icon{position:relative;flex:0 0 20px;width:20px;height:20px}
.history-icon::before,.history-icon::after{content:"";position:absolute;background:currentColor;left:3px;top:9px;width:14px;height:2px}
.history-icon::after{transform:rotate(90deg);transition:transform .2s ease}
.biography-history[open]>summary .history-icon::after{transform:rotate(0deg)}
.biography-history:not([open])>:not(summary){display:none}
.biography-history[open]>summary{margin-bottom:8px}

/* Revision 31: balanced header; the middle column stays on the viewport centre. */
.site-header.nav-ready,.site-header.nav-ready.scrolled{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center}
.site-header.nav-ready .brand{display:flex;align-items:center;justify-content:center;width:44px;height:44px;justify-self:start;grid-column:1;grid-row:1}
.site-header.nav-ready nav{grid-column:2;grid-row:1;justify-self:center}
.site-header.nav-ready .controls{grid-column:3;grid-row:1;justify-self:end;align-items:center}
@media(max-width:1024px){
 .site-header.nav-ready,.site-header.nav-ready.scrolled{--header-gutter:max(5%,env(safe-area-inset-left,0px),env(safe-area-inset-right,0px));grid-template-columns:minmax(44px,1fr) auto minmax(44px,1fr);grid-template-rows:44px;column-gap:12px;row-gap:0;padding:10px var(--header-gutter);align-items:center}
 .site-header.nav-ready .brand{font-size:28px;line-height:1;align-self:center}
 .site-header.nav-ready .controls{grid-column:2;grid-row:1;justify-self:center;align-self:center;width:108px;height:44px;margin:0;padding:0;border:0}
 .site-header.nav-ready .languages{display:grid;grid-template-columns:44px 8px 44px;gap:6px;align-items:center;justify-items:center;width:108px;height:44px}
 .site-header.nav-ready .languages a{display:flex;align-items:center;justify-content:center;width:44px;height:44px;min-height:44px;margin:0;padding:0;font-size:12px;line-height:1}
 .site-header.nav-ready .languages span{line-height:1}
 .site-header.nav-ready .menu-toggle{grid-column:3;grid-row:1;justify-self:end;align-self:center}
 .site-header.nav-ready nav{grid-column:auto;grid-row:auto;justify-self:stretch}
}
