:root{--sidebar:360px;--ink:#262626;--muted:#777;--paper:#fff}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;color:var(--ink);background:var(--paper);font:14px/1.55 'Baskerville','Times New Roman',serif}a{color:inherit;text-decoration:none}a:hover,button:hover{color:#888}button{font:inherit;color:inherit;border:0;padding:0;background:none;cursor:pointer}a:focus-visible,button:focus-visible{outline:1px solid #555;outline-offset:5px}h1,h2,p,figure{margin:0}h1,h2{font-size:14px;font-weight:400}ul{list-style:none;padding:0;margin:0}#sidebar{position:fixed;inset:0 auto 0 0;width:var(--sidebar);padding:50px 30px 65px 50px;overflow-y:auto;background:var(--paper);z-index:10}.name{font-size:21px;line-height:1;white-space:nowrap}#navigation{display:flex;gap:36px;margin-top:40px}#navigation li{position:relative;padding:4px 0;line-height:1}#navigation a[aria-current]::before{content:'';position:absolute;width:4px;height:4px;border-radius:50%;background:currentColor;left:-10px;top:11px}.subnav{font-size:13px;max-width:145px}.series-nav{padding:12px 0 8px 9px;color:#777;font-size:12px}.social{margin-top:30px}#menu{display:none}main{margin:18px 18px 60px var(--sidebar);min-height:calc(100svh - 78px)}footer{position:fixed;bottom:18px;left:50px;display:flex;gap:26px;font-size:12px;z-index:11}.home{height:calc(100svh - 36px);min-height:0;margin-bottom:18px;position:relative}.slideshow{height:100%;position:relative;isolation:isolate}.slide{position:absolute;inset:0;opacity:0;transition:opacity 850ms ease;display:flex;justify-content:flex-end;align-items:center;pointer-events:none}.slide.active{opacity:1;z-index:1}.slide img{display:block;width:66.666667%;height:66.666667%;object-fit:contain;object-position:right center}.slide-controls{position:absolute;bottom:10px;right:14px;z-index:2;display:flex;gap:16px;font-size:12px;background:rgba(255,255,255,.85);padding:4px 8px}.archive .card{display:block;margin-bottom:70px}.cover{display:block;width:100%;max-height:78svh;object-fit:contain;object-position:left center}.card figcaption{margin-top:14px}.muted,.year,.draft{color:var(--muted)}.year,.draft{font-size:12px}.page-heading{margin:0 0 30px}.breadcrumb{display:inline-block;margin-bottom:22px;font-size:12px;color:#777}.publication-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7% 3.5%}.publication-grid .cover{height:320px}.gallery figure{margin-bottom:18px}.gallery img{display:block;width:100%;height:auto;max-height:95svh;object-fit:contain;object-position:left center}.gallery figcaption{font-size:12px;color:#777;margin-top:7px}.project-description{max-width:610px;white-space:pre-line;margin:30px 0 55px}.details{margin:60px 0;max-width:650px}.details dl{display:grid;grid-template-columns:110px 1fr;gap:12px}.details dd{margin:0}.prose{padding-top:0;max-width:690px}.prose section{margin-bottom:56px}.prose h1,.prose h2{margin-bottom:20px}.prose p{margin-bottom:18px;white-space:pre-line}.prose .portrait{max-width:260px;height:auto;margin-bottom:30px}.prose a{text-decoration:underline;text-underline-offset:3px}.end-link{display:inline-block;margin:36px 0}.skip{position:fixed;left:10px;top:-100px;background:white;z-index:30}.skip:focus{top:10px}.empty{margin-top:40px}body.menu-open{overflow:hidden}@media(min-width:1600px){:root{--sidebar:390px}}@media(max-width:1100px) and (min-width:801px){:root{--sidebar:300px}#sidebar{padding-left:32px}#navigation{gap:24px}footer{left:32px}.name{font-size:21px}.subnav{max-width:120px}}@media(max-width:800px){#sidebar{position:relative;width:100%;height:70px;padding:20px 18px;overflow:visible;display:flex;align-items:flex-start;justify-content:space-between}.name{font-size:21px}#menu{display:block;font-size:15px}#navigation{display:none;position:fixed;inset:70px 0 0;background:white;margin:0;padding:35px 28px;overflow:auto;gap:45px;font-size:17px}#navigation.open{display:flex}.subnav{font-size:15px;max-width:180px}#navigation li{padding:8px 0}.series-nav{font-size:14px}#navigation a[aria-current]::before{top:17px}main{margin:22px 18px 55px;min-height:calc(100svh - 160px)}main.home{height:calc(100svh - 108px);min-height:0;margin-top:0;margin-bottom:18px}.slide img{object-position:center center}.slide{align-items:center}footer{position:relative;left:auto;bottom:auto;margin:20px 18px;font-size:11px}.home~footer{display:none}.archive .card{margin-bottom:50px}.publication-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:35px 20px}.publication-grid .cover{height:220px}.gallery img{max-height:none}.page-heading{margin-bottom:24px}.prose{padding-top:0}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.slide{transition:none}}

/* Default for every current and future gallery: half-size, right-aligned; originals retained. */
.gallery img{width:50%;max-height:47.5svh}
@media(max-width:800px){.gallery img{max-height:none}}

/* Series name is already in the navigation; retain a semantic page heading. */
.whispers-series > header.details{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap;margin:0!important}
.whispers-series .gallery{margin-top:30px}
.gallery img{margin-left:auto;object-position:right center}
.gallery figcaption{width:50%;margin-left:auto}

.series-statement{margin:30px 0 0;line-height:1.8}
.series-statement p{margin:0 0 1.4em}
.series-statement p:last-child{margin-bottom:0}
.project .series-statement{width:50%;margin-left:auto}

.category-heading{position:absolute;top:0;left:0;z-index:3}
.category-slideshow .slide img{width:50%;height:50%}
.category-slideshow .slide.active{pointer-events:auto}
.category-slideshow .slide:focus-visible{outline-offset:-4px}

/* Click-to-view retains the existing gallery geometry. */
.gallery-open{display:block;width:50%;margin-left:auto;cursor:zoom-in}
.gallery .gallery-open img{width:100%;margin-left:0}
body.viewer-open{overflow:hidden}
.image-viewer{position:fixed;inset:0;width:100vw;height:100dvh;max-width:none;max-height:none;margin:0;padding:0;border:0;background:#fff;color:#262626;font:14px/1.5 Baskerville,'Times New Roman',serif}
.image-viewer::backdrop{background:white}
.image-viewer[open]{display:flex;flex-direction:column}
.viewer-toolbar,.viewer-bottom{display:flex;align-items:center;gap:24px;padding:18px 28px;flex-shrink:0}
.viewer-count{margin-right:auto}.viewer-original{text-decoration:underline;text-underline-offset:3px}
.viewer-stage{flex:1;min-height:0;display:flex;align-items:center;justify-content:center;padding:0 28px}
.viewer-image{display:block;max-width:100%;max-height:100%;width:100%;height:100%;object-fit:contain}
.viewer-bottom{justify-content:space-between}.viewer-caption{text-align:center;color:#777}
@media(max-width:800px){.viewer-toolbar,.viewer-bottom{padding:14px 16px;gap:12px;font-size:12px}.viewer-stage{padding:0 16px}.viewer-caption{max-width:50%}}

/* In-place lightbox with the current gallery visible through a blurred backdrop. */
.image-viewer{background:transparent}
.image-viewer::backdrop{background:rgba(255,255,255,.65);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}
.viewer-toolbar,.viewer-bottom{background:transparent}
.viewer-stage{padding:16px 6vw}
.viewer-image{max-width:100%;max-height:100%;object-fit:contain}

/* Close remains visually unboxed, including its focused state. */
.viewer-close,.viewer-close:focus,.viewer-close:focus-visible{border:0;outline:none;box-shadow:none;background:transparent;appearance:none;-webkit-appearance:none}
.viewer-close:focus-visible{text-decoration:underline;text-underline-offset:4px}

/* Contact: a restrained right-hand text column and clear typographic hierarchy. */
main.contact-page{margin-left:max(var(--sidebar),49vw);margin-right:5vw;padding-top:32px;max-width:640px;min-height:calc(100svh - 110px);font-size:15px;line-height:1.8}
.contact-page h1{font-size:18px;font-weight:600;margin-bottom:34px}
.contact-name{font-size:16px;margin-bottom:14px}
.contact-lines{margin:0}.contact-lines>div{display:grid;grid-template-columns:112px minmax(0,1fr);column-gap:16px;margin:8px 0}
.contact-lines dt,.contact-lines dd{margin:0}.contact-lines dd{color:#737373;overflow-wrap:anywhere}
.contact-page a{color:#737373;text-decoration:none;transition:color .15s}
.contact-page a:hover{color:#222;text-decoration:underline;text-underline-offset:4px}
.contact-social{margin-top:68px;padding-top:48px;position:relative}
.contact-social h2{font-size:16px;font-weight:600;margin-bottom:20px}
.contact-region{font-size:12px;color:#777;white-space:nowrap}
@media(max-width:800px){main.contact-page{margin:28px 24px 60px;padding-top:0;max-width:none;min-height:calc(100svh - 210px);font-size:14px}.contact-page h1{margin-bottom:28px}.contact-lines>div{grid-template-columns:96px minmax(0,1fr);column-gap:12px}.contact-social{margin-top:52px;padding-top:36px}}
@media(max-width:380px){.contact-lines>div{grid-template-columns:1fr;gap:2px;margin-bottom:18px}}

/* Biography archive: section navigation, right column, aligned dates. */
main.about-page{margin-left:max(var(--sidebar),44vw);margin-right:4vw;padding-top:14px;max-width:850px;font-size:15px;line-height:1.8}
.about-page section{scroll-margin-top:30px;margin-bottom:72px}
.about-page h1,.about-page h2{font-size:17px;font-weight:600;line-height:1.4;margin-bottom:22px}
.about-page .about-intro{max-width:670px;margin-bottom:76px}
.about-intro p{margin-bottom:22px}
.about-subnav{color:#777}
.about-subnav li{padding-bottom:9px!important;line-height:1.4!important}
.biography-list{margin:0}.biography-row{display:grid;grid-template-columns:108px minmax(0,1fr);gap:18px;margin-bottom:24px}
.biography-row dt,.biography-row dd{margin:0}.biography-row dt{font-size:14px}.biography-row dd{white-space:pre-line}
@media(max-width:800px){main.about-page{margin:28px 24px 60px;padding:0;max-width:none;font-size:14px}.about-page h1,.about-page h2{font-size:16px}.about-page section{margin-bottom:50px;scroll-margin-top:24px}.biography-row{grid-template-columns:78px minmax(0,1fr);gap:12px}.biography-row dt{font-size:12px}.about-page .about-intro{margin-bottom:52px}}
@media(max-width:380px){.biography-row{grid-template-columns:1fr;gap:5px}.biography-row dt{color:#777}}

/* Route changes focus the main landmark without drawing a frame around the page. */
main:focus,main:focus-visible{outline:none}

/* Leave breathing room after the final biography entry. */
main.about-page{padding-bottom:clamp(180px,35svh,420px)}
.about-page section:last-child{margin-bottom:0}

/* Campaign projects: original photographs followed by a compact publication archive. */
.projects-archive .card{width:50%;margin-left:auto}
.projects-archive .cover{max-height:47.5svh;object-position:right center}
.campaign-project{padding-bottom:clamp(180px,35svh,420px)}
.campaign-project > header.details{width:50%;margin-left:auto!important;line-height:1.7}
.campaign-project h1{font-size:18px}
.project-credit{margin-top:16px;color:#777;font-size:12px}
.campaign-project > .project-description{width:50%;margin:24px 0 48px auto;line-height:1.8}
.campaign-project .gallery figure{margin-bottom:40px}
.published-records{width:50%;margin:76px 0 0 auto}
.published-records h2{font-size:16px}
.publication-source{font-size:12px;color:#777;margin:8px 0 26px}
.published-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}
.post-crop{position:relative;aspect-ratio:1256/1568;overflow:hidden}
.post-crop img{position:absolute;display:block;width:234.076434%;max-width:none;height:auto;left:-27.229299%;top:-18.75%}
.official-post{display:inline-block;margin-top:28px;font-size:12px;text-decoration:underline;text-underline-offset:4px}
@media(max-width:800px){.campaign-project > header.details,.campaign-project > .project-description,.published-records{width:100%}.published-records{margin-top:56px}.published-grid{gap:14px}.projects-archive .card{width:66.6667%}}

/* Story records retain account headers while hiding phone chrome and reply controls. */
.story-crop{position:relative;aspect-ratio:1206/2140;overflow:hidden}
.story-crop img{position:absolute;display:block;width:100%;height:auto;top:-8.738318%;left:0}
.story-records figcaption{font-size:12px;color:#777;line-height:1.5;margin-top:10px}

/* Printed editions and a manual, full-resolution digital reader. */
.books-archive .publication-grid{display:block}.books-archive .card{width:50%;margin-left:auto}.books-archive .publication-grid .cover{height:auto;max-height:47.5svh;object-position:right center}
.publication-detail{padding-bottom:clamp(180px,35svh,420px)}
.book-column{width:50%;margin-left:auto}.book-intro{margin:30px 0 45px;line-height:1.8}.book-intro h1{font-size:18px}.book-intro p{margin:12px 0}.book-intro>a{display:inline-block;font-size:12px;text-decoration:underline;text-underline-offset:4px;margin-top:12px}
.physical-book{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:32px 18px}.book-photo-wide{grid-column:1/-1}.physical-book .gallery-open{width:100%}.physical-book img{display:block;width:100%;height:auto}.physical-book figcaption{font-size:12px;color:#777;margin-top:8px}
.digital-book{margin-top:75px;scroll-margin-top:30px}.digital-book h2{font-size:16px}.reader-note{font-size:12px;margin:8px 0 24px}.digital-book .reader-page{width:100%;height:340px;display:flex;align-items:center;justify-content:center}.cropped-page{display:block;position:relative;overflow:hidden;aspect-ratio:var(--crop-ratio);width:min(100%,calc(340px * var(--crop-ratio)))}
.cropped-page img,.viewer-frame.is-cropped .viewer-image{position:absolute;width:var(--crop-width);height:auto;max-width:none;max-height:none;left:var(--crop-left);top:var(--crop-top)}
.reader-controls{display:flex;justify-content:space-between;align-items:center;margin-top:22px;font-size:12px}.reader-controls button:disabled{opacity:.3;cursor:default}.book-info{display:grid;grid-template-columns:100px 1fr;gap:12px;font-size:12px;margin-top:70px;line-height:1.7}.book-info dd{margin:0}.book-info dt{color:#777}
.viewer-frame{width:100%;height:100%;display:flex;align-items:center;justify-content:center}.viewer-frame.is-cropped{display:block;position:relative;overflow:hidden;height:auto;width:min(100%,calc((100dvh - 180px) * var(--crop-ratio)));aspect-ratio:var(--crop-ratio)}
@media(max-width:800px){.book-column{width:100%}.books-archive .card{width:66.6667%}.digital-book .reader-page{height:280px}.cropped-page{width:min(100%,calc(280px * var(--crop-ratio)))}.physical-book{gap:24px 14px}}

/* Read the digital book first; physical photographs display at 80% of their previous size. */
.publication-detail .digital-book{margin-top:28px}
.publication-detail .book-intro{margin-bottom:24px}
.physical-heading{font-size:16px;margin:80px 0 26px auto;width:80%}
.publication-detail .physical-book{width:80%;margin-left:auto;gap:25.6px 14.4px}
@media(max-width:800px){.publication-detail .physical-book{gap:19.2px 11.2px}}

/* Publications archive: restrained cover grid, titles and dates below. */
main.books-archive{margin-left:max(var(--sidebar),44vw);margin-right:3vw;padding-top:14px}
.books-archive>.page-heading{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
.books-archive .publication-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:64px 34px;align-items:start}
.books-archive .card{width:100%;margin:0}
.books-archive .publication-grid .cover{width:100%;height:280px;max-height:none;object-fit:contain;object-position:left bottom}
.books-archive .card figcaption{font-size:15px;line-height:1.5;margin-top:12px}.books-archive .year{font-size:14px;margin-top:4px}
@media(max-width:1100px){.books-archive .publication-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:45px 25px}}
@media(max-width:800px){main.books-archive{margin:22px 24px 65px;padding-top:0}.books-archive .publication-grid .cover{height:230px}}
@media(max-width:420px){.books-archive .publication-grid{gap:36px 18px}.books-archive .publication-grid .cover{height:190px}.books-archive .card figcaption{font-size:13px}}

/* Stronger separation for white digital book pages. */
.image-viewer.book-reader-viewer::backdrop{background:rgba(20,23,27,.78);backdrop-filter:blur(28px);-webkit-backdrop-filter:blur(28px)}
.book-reader-viewer .viewer-toolbar,.book-reader-viewer .viewer-bottom{color:#f5f5f5}
.book-reader-viewer .viewer-caption{color:#ddd}
.book-reader-viewer button:hover{color:#fff}

/* Works overview uses the same display scale as the homepage. */
.works-overview .slide img{width:66.666667%;height:66.666667%}

/* Move presentation imagery left by 10% of its page content area, without scaling. */
main{container-type:inline-size}
.slide img,.gallery>figure,.archive .card,.physical-book,.digital-book .reader-page,.published-grid{position:relative;left:-10cqw}
/* Small screens keep imagery inside the viewport when there is no spare left margin. */
@media(max-width:800px){.physical-book,.digital-book .reader-page,.published-grid{left:0}}
@media(max-width:800px){.books-archive .card{left:0}}

/* Navigation already identifies overview pages; retain headings for accessibility only. */
.archive>.page-heading,.home>.category-heading{position:absolute;width:1px;height:1px;padding:0;margin:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}

/* Sidebar already supplies series identity and section navigation. */
.series-detail>header.details>h1,.contact-intro>h1{position:absolute;width:1px;height:1px;padding:0;margin:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.series-detail>header.details{margin:0!important}
.series-detail>header.details p:empty{display:none}
.series-detail.whispers-series .gallery{margin-top:0}

/* Homepage runs as an unobstructed automatic slideshow. */
.home:not(.category-slideshow) .slide-controls{display:none}

/* Typography preview: thin display text with light, readable navigation and copy. */
@font-face{font-family:Portfolio Helvetica;src:local('HelveticaNeue-Thin');font-style:normal;font-weight:200;font-display:swap}
@font-face{font-family:Portfolio Helvetica;src:local('HelveticaNeue-Light');font-style:normal;font-weight:300;font-display:swap}
:root{--ink:#292929;--muted:#595959;--portfolio-font:'Portfolio Helvetica','Helvetica Neue',Helvetica,Arial,sans-serif}
body,.image-viewer{font-family:var(--portfolio-font);font-weight:300}
.name,h1,.about-page h1,.contact-page h1{font-weight:200}
h2,.about-page h2,.contact-social h2{font-weight:300}
.series-nav,.about-subnav,.gallery figcaption,.viewer-caption,.contact-lines dd,.contact-page a,.contact-region,.project-credit,.publication-source,.story-records figcaption,.physical-book figcaption,.book-info dt,.breadcrumb{color:var(--muted)}
a:hover,button:hover{color:#444}
.book-reader-viewer .viewer-caption{color:#ddd}
.book-reader-viewer button:hover{color:#fff}

/* Main navigation: uppercase, with a modest increase in weight. */
@font-face{font-family:Portfolio Helvetica;src:local('HelveticaNeue-Medium');font-style:normal;font-weight:500;font-display:swap}
#navigation>ul:first-child>li>a,#menu{font-weight:300}

/* Consistent title hierarchy; descriptive copy keeps its light weight. */
.name,h1,h2,.about-page h1,.about-page h2,.contact-page h1,.contact-social h2,.contact-name,.subnav a,.card figcaption,.gallery figcaption,.viewer-caption{font-weight:500}
.card figcaption .year,.card figcaption .draft{font-weight:300}

/* Uppercase branding; navigation retains its original title case. */
.name{text-transform:uppercase;font-weight:500;letter-spacing:.035em}

/* Restore the light navigation shown in the approved size reference. */
#navigation a{font-weight:300;letter-spacing:normal;text-transform:none}

/* Brand uses option B, Avenir Light, at the existing size. */
@font-face{font-family:Portfolio Avenir;src:local('Avenir-Light');font-style:normal;font-weight:300;font-display:swap}
.name{font-family:'Portfolio Avenir',Avenir,'Avenir Next',sans-serif;font-weight:300}

/* Darker brand and titles; body and supporting text retain their colors. */
.name{color:#111}
h1,h2,.contact-name,.card figcaption{color:#202020}
.gallery figcaption,.image-viewer:not(.book-reader-viewer) .viewer-caption{color:#494949}

/* Shared site navigation: approved homepage sizing and spacing. */
#sidebar{padding-left:calc(50px + 5vw)}
.name{font-size:22px}
#navigation{font-size:15px;margin-top:44px}
#navigation li{padding-top:4.4px;padding-bottom:4.4px;line-height:1.1}
.social{margin-top:33px}
footer{font-size:13px;left:calc(50px + 5vw)}
@media(max-width:1100px) and (min-width:801px){#sidebar{padding-left:calc(32px + 5vw)}footer{left:calc(32px + 5vw)}}
@media(max-width:800px){#sidebar{padding-left:calc(18px + 5vw)}#menu{font-size:16px;position:relative;left:5vw}#navigation{font-size:18px;margin-top:0;padding-left:calc(28px + 5vw)}#navigation li{padding-top:8.8px;padding-bottom:8.8px}}

/* Give expanded category navigation the same room after the shared right offset. */
@media(min-width:801px){#sidebar{width:calc(var(--sidebar) + 5vw)}.subnav{font-size:14px}.series-nav{font-size:13px;padding-top:13.2px;padding-bottom:8.8px}}
@media(max-width:800px){.subnav{font-size:16px}.series-nav{font-size:15px}#menu{left:0}#sidebar{padding-right:18px}}

/* Project index titles sit beside the cover at its vertical midpoint. */
.projects-archive .card>figure{position:relative}
@media(min-width:801px){.projects-archive .card figcaption{position:absolute;left:-5vw;top:50%;transform:translateY(-50%);margin:0;width:45%;line-height:1.5}}
@media(max-width:800px){.projects-archive .card>figure{display:flex;flex-direction:column}.projects-archive .card figcaption{order:-1;margin:0 0 16px}}

/* Near-white background, halfway between white and mist white. */
:root{--paper:#FAFAF9}

/* User-selected deep navy typography on the approved near-white background. */
:root{--ink:#0E1A2B;--muted:#0E1A2B}
.name,h1,h2,.contact-name,.card figcaption,.gallery figcaption,
.image-viewer:not(.book-reader-viewer),
.image-viewer:not(.book-reader-viewer) .viewer-caption{color:#0E1A2B}
a:hover,button:hover{color:#35465D}
.book-reader-viewer button:hover{color:#fff}

/* Individual photograph captions sit to the left, centered on their image. */
@media(min-width:801px){
 .gallery>figure{position:relative}
 .gallery>figure>figcaption{position:absolute;top:50%;right:calc(50% + 24px);width:calc(25% - 12px);margin:0;transform:translateY(-50%);line-height:1.5;overflow-wrap:break-word}
}
@media(max-width:800px){
 .gallery>figure{display:flex;flex-direction:column}
 .gallery>figure>figcaption{order:-1;margin-top:0;margin-bottom:12px}
}

/* Photograph captions keep the same light weight as body copy. */
.gallery figcaption,.physical-book figcaption,.story-records figcaption,.viewer-caption{font-weight:300}
