/* 01 — Palette, type, and accessible defaults */
:root{--bg:#101012;--ink:#efece5;--muted:#949397;--line:#303033;--accent:#b7a4da;--display:'Space Grotesk',sans-serif;--body:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;--gutter:clamp(22px,4.3vw,80px)}
*,*::before,*::after{box-sizing:border-box}html{scroll-padding-top:108px}body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--body);font-size:16px;line-height:1.5;overflow-x:clip}body::before{content:'';position:absolute;z-index:-1;top:-130px;right:0;width:min(70vw,1000px);height:1000px;background:radial-gradient(ellipse at 75% 25%,#71549226,transparent 65%);pointer-events:none}::selection{background:var(--accent);color:var(--bg)}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;cursor:pointer}h1,h2,h3,p,figure,blockquote{margin:0}h1,h2,h3{font-family:var(--display);font-weight:500}img{display:block;width:100%;height:100%;object-fit:cover}svg{display:block}button,a{-webkit-tap-highlight-color:transparent}a:focus-visible,button:focus-visible{outline:2px solid var(--accent);outline-offset:7px}section,footer{scroll-margin-top:24px}.section-shell{padding-left:var(--gutter);padding-right:var(--gutter);max-width:1800px;margin:auto}.eyebrow{font-size:11px;letter-spacing:.12em;line-height:1.6;font-weight:500}.muted{color:var(--muted)}.accent{color:var(--accent)}[hidden]{display:none!important}.skip-link{position:fixed;top:12px;left:16px;padding:12px 18px;z-index:200;background:var(--ink);color:var(--bg);transform:translateY(-160%)}.skip-link:focus{transform:none}
.button{display:inline-flex;align-items:center;justify-content:center;background:transparent;border:1px solid #66636b;border-radius:100px;padding:18px 25px;font-size:14px;width:fit-content;position:relative}.magnetic-content{display:flex;align-items:center;gap:26px;pointer-events:none;will-change:transform}.button:hover{border-color:var(--accent);background:#b7a4da0d}.text-link{display:flex;align-items:center;gap:35px;font-size:14px}.text-link span{font-size:20px}.text-link:hover{color:var(--accent)}

/* 02 — Preloader (enabled by JS, with a fail-open timeout) */
.preloader{position:fixed;inset:0;background:#070708;z-index:150;display:flex;flex-direction:column;justify-content:flex-end;padding:var(--gutter);pointer-events:auto}.loader-name{position:absolute;top:40px;left:var(--gutter);font-family:var(--display);font-size:14px}.loader-count{font-family:var(--display);font-size:clamp(100px,25vw,360px);font-weight:500;line-height:1;letter-spacing:-.09em;display:flex;align-items:baseline}.loader-percent{font-size:.19em;letter-spacing:-.05em;margin-left:20px;color:var(--accent)}.loader-progress{position:absolute;bottom:0;left:0;height:3px;width:100%;background:var(--accent);transform:scaleX(0);transform-origin:left}

/* 03 — Fixed navigation */
.site-header{position:fixed;top:0;left:0;width:100%;padding:22px var(--gutter);z-index:80;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:32px;background:#101012d9;backdrop-filter:blur(18px);border-bottom:1px solid #ffffff08;transition:transform .35s ease}.site-header.is-hidden{transform:translateY(-110%)}.site-header:focus-within{transform:none}.wordmark{font-family:var(--display);font-size:23px;letter-spacing:-.055em;width:fit-content;font-weight:600}.brand-dot{color:var(--accent)}.site-header nav{display:flex;gap:32px;font-size:13px}.site-header nav a{position:relative}.site-header nav a::after{content:'';position:absolute;bottom:-4px;left:0;width:100%;height:1px;background:var(--accent);transform:scaleX(0);transform-origin:left;transition:transform .2s}.site-header nav a:hover::after{transform:scaleX(1)}.button-small{justify-self:end;font-size:12px;padding:11px 18px}.button-small .magnetic-content{gap:25px}

/* 04 — Hero and rotating type badge */
.hero{min-height:850px;padding-top:148px;padding-bottom:26px;display:flex;flex-direction:column;justify-content:space-between}.hero-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(260px,34%);gap:30px;align-items:center;margin-top:64px;margin-bottom:80px}.hero-heading{min-width:0}.hero-heading>.eyebrow{margin-bottom:25px;color:var(--muted)}h1{font-size:clamp(76px,12vw,200px);line-height:.88;letter-spacing:-.07em;font-weight:500}.line-mask{display:block;overflow:clip;padding-bottom:.11em;margin-bottom:-.04em}.hero-line{display:block;transform-origin:bottom left}.hero-period{color:var(--accent)}.hero-bottom{margin-top:42px;display:flex;justify-content:space-between;align-items:end;gap:20px;max-width:670px}.hero-bottom p{font-size:14px;line-height:1.7}.hero-visual{position:relative;align-self:center;max-width:480px;width:100%;justify-self:end;padding-bottom:0}.hero-feature{margin:0}.hero-book-wrap{position:relative}.hero-book{display:block;width:100%;height:clamp(300px,30vw,430px);border:1px solid #ffffff12;border-radius:1px;padding:0;background:#27232d;perspective:1000px;text-align:left}.hero-book:disabled{cursor:default}.hero-book-surface{position:relative;display:block;width:100%;height:100%;transform-style:preserve-3d;will-change:transform}.hero-piece{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;background:#27232d}.hero-piece-page{transform-origin:left center;backface-visibility:hidden;will-change:transform,opacity}.hero-feature-caption{margin-top:22px;min-height:66px;transition:opacity .3s}.hero-piece-title{font-family:var(--display);font-size:clamp(17px,1.6vw,23px);line-height:1.2;letter-spacing:-.035em}.hero-piece-description{margin-top:9px;font-size:12px;line-height:1.6;color:var(--muted)}.hero-feature[data-state="flipping"] .hero-feature-caption{opacity:0}.rotating-badge{position:absolute;bottom:-7px;left:-65px;width:125px;height:125px;color:var(--ink);background:var(--bg);border-radius:50%;padding:5px;animation:spin 12s linear infinite}.rotating-badge text{fill:currentColor;font-family:var(--body);font-size:10px;letter-spacing:2px}.badge-star{stroke:var(--accent);stroke-width:1.5}@keyframes spin{to{transform:rotate(360deg)}}

/* 05 — Infinite marquee */
.marquee{overflow:hidden;padding:55px 0 50px;border-bottom:1px solid var(--line);margin-top:30px}.marquee-track{width:max-content;display:flex;will-change:transform}.marquee-group{display:flex;align-items:center;flex:none;gap:42px;padding-right:42px;font-family:var(--display);font-size:clamp(50px,7.6vw,128px);line-height:1;letter-spacing:-.045em;white-space:nowrap}.marquee-star{color:var(--accent);font-size:.7em}.outline{color:transparent;-webkit-text-stroke:1px #9a989e}

/* 06 — Selected work: editorial grid and interactive image covers */
.work{padding-top:128px;padding-bottom:155px}.section-heading{position:relative;margin-bottom:68px}.section-heading .eyebrow{color:var(--muted);margin-bottom:28px}h2{font-size:clamp(44px,5.5vw,90px);letter-spacing:-.055em;line-height:1.04}.project-grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:6%;row-gap:72px}.project-card{grid-column:span 7;min-width:0}.project-card:nth-child(4n+2),.project-card:nth-child(4n+3){grid-column:span 5}.project-card:nth-child(4n+2),.project-card:nth-child(4n+4){padding-top:150px}.project-media{aspect-ratio:4/3;background:#262329;overflow:hidden;clip-path:inset(0)}.project-card:nth-child(4n+2) .project-media,.project-card:nth-child(4n+3) .project-media{aspect-ratio:4/5}.project-media img{transition:transform .7s cubic-bezier(.2,.65,.3,1)}.project-card:hover .project-media img{transform:scale(1.045)}.project-caption{display:flex;justify-content:space-between;gap:16px;margin-top:23px}.project-caption h3{font-size:clamp(19px,2vw,29px);letter-spacing:-.04em;line-height:1.2}.project-caption p{color:var(--muted);font-size:12px;margin-top:8px}.project-number{font-family:var(--display);font-size:12px;color:var(--muted);padding-top:6px}

/* Project hover spread: thumbnails emerge from a single point, then fan outward. */
.project-card{position:relative;cursor:pointer}.cursor-active .project-card{cursor:none}.project-card.is-previewing,.project-card:focus-within{z-index:10}.project-stage{position:relative;isolation:isolate}.project-open{position:absolute;inset:0;z-index:3;width:100%;border:0;background:transparent;padding:0;text-align:left;border-radius:0}.project-open:disabled{cursor:default}.project-open:disabled .project-open-label{display:none}.project-open:focus-visible{outline-offset:6px}.project-open-label{position:absolute;bottom:22px;right:22px;display:flex;align-items:center;gap:24px;padding:12px 18px;border-radius:40px;background:var(--ink);color:var(--bg);font-size:12px;opacity:0;transform:translateY(8px);transition:opacity .3s,transform .3s}.project-card:hover .project-open-label,.project-card:focus-within .project-open-label{opacity:1;transform:none}.project-media img{transition:transform .35s cubic-bezier(.2,.65,.3,1),filter .18s}.project-spread{position:absolute;left:50%;top:46%;z-index:2;width:0;height:0;pointer-events:none}.spread-image{position:absolute;left:0;top:0;width:clamp(125px,14vw,195px);height:auto;aspect-ratio:3/4;object-fit:cover;border:5px solid var(--ink);box-shadow:0 12px 28px #0006;opacity:0;transform:translate(-50%,-50%) translateY(24px) scale(.65);transition:transform .28s cubic-bezier(.215,.61,.355,1),opacity .16s;transition-delay:0s;will-change:transform,opacity}.project-card.is-previewing .spread-image.is-loaded,.project-card:focus-within .spread-image.is-loaded{opacity:1;transform:translate(-50%,-50%) translate(var(--fan-x),var(--fan-y)) rotate(var(--fan-rotation)) scale(1);transition-delay:var(--fan-delay)}.project-card.is-previewing .project-media img,.project-card:focus-within .project-media img{filter:brightness(.55);transform:scale(1.035)}

/* Full project view: native modal, one ordered vertical line of uncropped images. */
.project-dialog{width:100%;max-width:none;height:100dvh;max-height:none;margin:0;padding:0;border:0;background:var(--bg);color:var(--ink);overflow-y:auto;overscroll-behavior:contain}.project-dialog::backdrop{background:#000b}.gallery-toolbar{position:sticky;top:0;z-index:2;display:flex;justify-content:space-between;align-items:center;gap:20px;padding:22px var(--gutter);border-bottom:1px solid var(--line);background:#101012f2;backdrop-filter:blur(18px)}.gallery-brand{font-family:var(--display);font-weight:600;font-size:22px;letter-spacing:-.055em}.gallery-close{font-size:12px;padding:11px 18px}.gallery-close .magnetic-content{gap:24px}.gallery-close .magnetic-content>span{font-size:23px;line-height:1}.gallery-content{width:min(100%,1200px);margin:auto;padding:70px var(--gutter) 50px}.gallery-heading{margin-bottom:55px}.gallery-heading .eyebrow{color:var(--muted);margin-bottom:20px}.gallery-heading h2{font-size:clamp(43px,6.4vw,100px);overflow-wrap:anywhere}.gallery-count{color:var(--muted);font-size:12px;letter-spacing:.08em;margin-top:22px}.gallery-images{display:flex;flex-direction:column;gap:50px}.gallery-images img{width:100%;height:auto;object-fit:contain;background:#252329}.gallery-images figcaption{font-size:12px;line-height:1.7;color:var(--muted);margin-top:15px}.gallery-open{overflow:hidden}.gallery-open .cursor-dot,.gallery-open .cursor-ring{display:none!important}.gallery-open .project-dialog,.gallery-open .project-dialog button,.gallery-open .project-dialog a{cursor:auto}
@media(max-width:700px){.project-open-label{opacity:1;transform:none;font-size:11px;padding:10px 14px;bottom:15px;right:15px}.gallery-toolbar{padding-top:14px;padding-bottom:14px}.gallery-brand{font-size:19px}.gallery-close{font-size:11px;padding:8px 13px}.gallery-close .magnetic-content{gap:12px}.gallery-content{padding-top:40px}.gallery-heading{margin-bottom:35px}.gallery-images{gap:30px}}
@media(hover:none),(pointer:coarse){.project-spread{display:none}.project-open-label{opacity:1;transform:none}.project-card:focus-within .project-media img{filter:none;transform:none}}
@media(prefers-reduced-motion:reduce){.project-spread{display:none}.project-card.is-previewing .project-media img,.project-card:focus-within .project-media img{filter:none}.project-open-label{opacity:1;transform:none}}

/* 07 — About: sticky photo stays inside its own section */
.about{display:grid;grid-template-columns:5fr 6fr;gap:12%;padding-top:110px;padding-bottom:140px;border-top:1px solid var(--line)}.about-portrait{align-self:start;position:sticky;top:120px;min-width:0}.about-image{aspect-ratio:4/5;max-height:600px;overflow:hidden;background:#252329}.about-copy{padding:25px 0 30px;min-width:0}.about-copy>.eyebrow{color:var(--muted);margin-bottom:35px}.about-lead{font-family:var(--display);font-size:clamp(25px,2.8vw,44px);line-height:1.25;letter-spacing:-.035em;margin-top:36px}.about-description{font-size:16px;line-height:1.85;color:var(--muted);margin-top:27px;max-width:460px}.about-copy .button{margin-top:40px}

/* 10 — Contact and outlined headline fill */
.contact{border-top:1px solid var(--line);padding-top:58px;padding-bottom:26px;position:relative}.contact-title{font-size:clamp(53px,12.6vw,200px);letter-spacing:-.068em;line-height:.98;margin-top:0}.contact-title a{display:block;width:fit-content}.contact-title a>span{display:block;width:fit-content;background:linear-gradient(var(--ink),var(--ink)) no-repeat;background-size:0 100%;-webkit-background-clip:text;background-clip:text;-webkit-text-stroke:1px var(--ink);color:transparent;transition:background-size .7s cubic-bezier(.2,.65,.3,1)}.contact-title a:hover>span,.contact-title a:focus-visible>span{background-size:100% 100%}.contact-title .accent{-webkit-text-stroke:0;color:var(--accent)}.contact-actions{margin-top:45px;display:flex;justify-content:space-between;align-items:center;gap:30px}.email-button{background:var(--ink);color:var(--bg);border-color:var(--ink);font-size:15px;padding:20px 28px}.email-button:hover{background:var(--accent);border-color:var(--accent)}.social-links{display:flex;gap:30px;font-size:13px}.social-links span{color:var(--muted);margin-left:6px}.social-links a:hover{color:var(--accent)}.contact-notice{font-size:12px;color:var(--accent);min-height:20px;margin-top:18px}.footer-bottom{display:flex;justify-content:space-between;align-items:center;gap:24px;border-top:1px solid var(--line);margin-top:70px;padding-top:26px;font-size:9px;letter-spacing:.08em;color:var(--muted)}.back-top{color:var(--ink);padding:8px 0}.back-top .magnetic-content{gap:15px}

/* 11 — Fine-pointer cursor: only enabled after motion libraries load */
.cursor-dot,.cursor-ring{display:none;position:fixed;left:0;top:0;border-radius:50%;pointer-events:none;z-index:140;opacity:0}.cursor-dot{width:5px;height:5px;background:var(--ink)}.cursor-ring{width:32px;height:32px;border:1px solid #d3cad780}.cursor-active,.cursor-active a,.cursor-active button{cursor:none}.cursor-active .cursor-dot,.cursor-active .cursor-ring{display:block}

/* 12 — Responsive layout */
@media(min-width:1600px){.hero{min-height:1000px}.hero-grid{gap:60px}}
@media(max-width:1000px){.hero{min-height:750px}.hero-grid{grid-template-columns:minmax(0,1fr) minmax(220px,34%);gap:24px}h1{font-size:12vw}.hero-bottom{flex-direction:column;align-items:start;gap:22px}.hero-book{height:300px}.rotating-badge{width:106px;height:106px;left:-42px}.project-grid{column-gap:5%;row-gap:55px}.project-card:nth-child(4n+2),.project-card:nth-child(4n+4){padding-top:95px}.about{gap:8%}.work{padding-top:90px;padding-bottom:110px}}
@media(max-width:700px){html{scroll-padding-top:116px}.site-header{grid-template-columns:1fr auto;padding-top:14px;padding-bottom:12px;gap:13px}.wordmark{font-size:21px}.site-header nav{grid-column:1/-1;grid-row:2;justify-content:center;gap:40px;font-size:12px}.button-small{grid-column:2;grid-row:1;padding:8px 13px}.button-small .magnetic-content{gap:18px}.hero{padding-top:142px;min-height:auto}.hero-grid{grid-template-columns:1fr;gap:38px;margin-top:38px;margin-bottom:44px}.hero-heading>.eyebrow{font-size:9px;margin-bottom:22px}h1{font-size:clamp(72px,18.4vw,126px)}.hero-bottom{flex-direction:row;align-items:end;margin-top:24px;gap:14px}.hero-bottom p{font-size:11px}.hero-bottom .text-link{font-size:11px;gap:15px}.hero-visual{width:76%;max-width:360px;margin-right:0}.hero-book{height:auto;aspect-ratio:1/1}.rotating-badge{width:100px;height:100px;left:-46px;bottom:4px}.marquee{padding:35px 0;margin-top:18px}.marquee-group{gap:24px;padding-right:24px;font-size:55px}.work{padding-top:70px;padding-bottom:75px}.section-heading{margin-bottom:40px}.section-heading .eyebrow{margin-bottom:20px;font-size:9px}h2{font-size:48px}.project-grid{grid-template-columns:1fr;gap:42px}.project-card,.project-card:nth-child(n){grid-column:auto;padding-top:0}.project-card:nth-child(n) .project-media{aspect-ratio:4/3}.project-caption{margin-top:16px}.project-caption h3{font-size:22px}.project-caption p{font-size:11px}.about{grid-template-columns:1fr;gap:40px;padding-top:65px;padding-bottom:75px}.about-portrait{position:static;width:85%}.about-image{aspect-ratio:4/4.5;max-height:500px}.about-copy{padding:0}.about-copy>.eyebrow{font-size:9px;margin-bottom:22px}.about-lead{font-size:29px;margin-top:25px}.about-description{font-size:15px;line-height:1.75;margin-top:22px}.contact{padding-top:35px}.contact-title{font-size:clamp(49px,12.9vw,92px);margin-top:0;letter-spacing:-.07em}.contact-actions{flex-direction:column;align-items:start;gap:29px;margin-top:30px}.email-button{font-size:13px;padding:17px 22px}.social-links{font-size:12px;gap:24px}.footer-bottom{margin-top:38px;padding-top:18px;font-size:8px;gap:12px}}
@media(hover:none),(pointer:coarse){.cursor-dot,.cursor-ring{display:none!important}.cursor-active,.cursor-active a,.cursor-active button{cursor:auto}}

/* 13 — Reduced motion: readable static content, native scrolling, no hidden reveals */
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}.rotating-badge{animation:none}.hero-book-surface,.hero-piece,.project-media img,.magnetic-content{transform:none!important}.marquee{padding-left:var(--gutter);padding-right:var(--gutter)}.marquee-track{width:100%;transform:none!important}.marquee-group{white-space:normal;font-size:clamp(30px,5.5vw,80px);flex-wrap:wrap;gap:16px;padding:0}.marquee-group[aria-hidden],.marquee-group>.outline,.marquee-group>.marquee-star:last-child{display:none}.cursor-dot,.cursor-ring{display:none!important}.cursor-active,.cursor-active a,.cursor-active button{cursor:auto}.contact-title a>span{background-size:100% 100%}}

.about-description{white-space:pre-line}.hero-visual[hidden]{display:none}.gallery-description{font-size:1rem;line-height:1.6;max-width:65ch;white-space:pre-line}
