:root { --ink:#11110f; --paper:#eeeade; --impact:#d83a2e; --line:rgba(238,234,222,.26); --pad:clamp(1.5rem,5.2vw,6.5rem); --section-y:clamp(6rem,12vw,11.5rem); --scene-overlap:clamp(2rem,6vh,5rem); --ease:cubic-bezier(.16,1,.3,1); --ease-silk:cubic-bezier(.77,0,.18,1); --nav-blur:0px; --font-geist-sans:Arial,sans-serif; --font-geist-mono:'Courier New',monospace; }
* { box-sizing:border-box; }
html { scroll-behavior:smooth; background:var(--ink); }
html.is-programmatic-scroll { scroll-behavior:auto!important; }
body { margin:0; overflow-x:clip; background:var(--paper); color:var(--ink); font-family:var(--font-geist-sans),Arial,sans-serif; }
body.menu-open { overflow:hidden; }
body::after { content:''; position:fixed; z-index:17; inset:0; pointer-events:none; opacity:0; background:linear-gradient(180deg,transparent 15%,rgba(238,234,222,.08) 50%,transparent 85%); backdrop-filter:blur(0); transition:opacity .22s ease,backdrop-filter .22s ease; }
body.is-navigating::after { opacity:1; backdrop-filter:blur(var(--nav-blur)); }
a { color:inherit; text-decoration:none; }
button { color:inherit; font:inherit; }
img { display:block; width:100%; }
::selection { background:var(--impact); color:var(--ink); }
h1,h2,h3,p { overflow-wrap:normal; }
h1,h2,h3 { text-wrap:balance; }
a:focus-visible,button:focus-visible { outline:2px solid currentColor; outline-offset:5px; }
.sr-only { position:absolute!important; width:1px!important; height:1px!important; padding:0!important; margin:-1px!important; overflow:hidden!important; clip:rect(0,0,0,0)!important; white-space:nowrap!important; border:0!important; }

.scene-transition { --boundary-progress:0; --boundary-offset:0px; --content-offset:0px; --boundary-scale:1; --media-scale:1; position:sticky; top:var(--sticky-top,0px); margin-top:calc(0px - var(--scene-overlap)); box-shadow:0 clamp(-2.5rem,-3vw,-.8rem) clamp(1.5rem,4vw,4rem) rgba(0,0,0,.12),0 -1px 0 rgba(17,17,15,.2); transform:translate3d(0,0,0); transform-origin:center top; transition:transform .18s var(--ease),filter .32s ease; }
.scene-motion-ready .scene-transition { transform:translate3d(0,var(--boundary-offset),0) scale(var(--boundary-scale)); }
.scene-transition::before { content:''; position:absolute; z-index:2; top:0; left:var(--pad); width:clamp(2.5rem,8vw,7rem); height:2px; background:var(--impact); transform:scaleX(var(--boundary-progress)); transform-origin:left; }
.scene-transition::after { content:''; position:absolute; z-index:1; top:0; right:0; left:0; height:clamp(1.5rem,4vw,3.5rem); pointer-events:none; background:linear-gradient(180deg,rgba(0,0,0,.09),transparent); opacity:.52; }
.scene-transition>.section-heading,.scene-transition>.sticky-title,.scene-transition>.contact-action,.manifesto>.manifesto-copy { translate:0 var(--content-offset); }
.manifesto>h2 { opacity:var(--about-title-opacity,.34); filter:blur(var(--about-title-blur,2.8px)); clip-path:inset(0 var(--about-title-clip,100%) 0 0); transform:translate3d(var(--about-title-x,-42vw),var(--content-offset),0); transition:transform .2s var(--ease),filter .18s ease,opacity .18s ease,clip-path .2s var(--ease); }
.scene-transition .work-media img { scale:var(--media-scale); }

.site-header { position:absolute; z-index:20; top:0; width:100%; display:flex; justify-content:space-between; align-items:flex-start; padding:1.6rem var(--pad); color:white; mix-blend-mode:difference; text-transform:uppercase; font:600 .72rem/1 var(--font-geist-mono); letter-spacing:.05em; }
.brand { font-size:.86rem; line-height:.78; letter-spacing:-.05em; }
.desktop-nav { display:flex; gap:clamp(1.5rem,4vw,4.5rem); }
.desktop-nav a,.menu-button { position:relative; padding-bottom:.35rem; }
.desktop-nav a::after { content:''; position:absolute; inset:auto 0 0; height:1px; background:currentColor; transform:scaleX(0); transform-origin:right; transition:transform .35s var(--ease); }
.desktop-nav a:hover::after,.desktop-nav a:focus-visible::after { transform:scaleX(1); transform-origin:left; }
.menu-button,.mobile-menu { display:none; }
.section-rail { position:fixed; z-index:18; top:50%; right:0; display:flex; flex-direction:column; align-items:flex-end; transform:translateY(-50%); color:white; mix-blend-mode:difference; }
.section-rail a { display:flex; min-height:1.45rem; align-items:center; justify-content:flex-end; gap:.45rem; padding:.15rem .8rem .15rem 1rem; font:600 .58rem/1 var(--font-geist-mono); letter-spacing:.08em; text-transform:uppercase; transition:min-height .55s var(--ease),padding .55s var(--ease),gap .55s var(--ease); }
.section-rail.is-expanded a,.section-rail:focus-within a { min-height:2.45rem; gap:.7rem; padding:.45rem 1rem .45rem 1.35rem; }
.section-rail a span { opacity:0; clip-path:inset(0 0 0 100%); transform:translateX(1.1rem); transition:opacity .35s ease,clip-path .55s var(--ease-silk),transform .65s var(--ease-silk); }
.section-rail i { display:block; width:.28rem; height:.28rem; border:1px solid currentColor; border-radius:50%; opacity:.62; transform-origin:right center; transition:width .58s var(--ease),height .58s var(--ease),border-radius .58s var(--ease),background .3s ease,opacity .3s ease,transform .58s var(--ease); }
.section-rail.is-expanded i,.section-rail:focus-within i { width:.36rem; height:.36rem; }
.section-rail.is-expanded a span,.section-rail:focus-within a span { opacity:1; clip-path:inset(0); transform:translateX(0); }
.section-rail a:nth-child(1) span { transition-delay:.24s; }
.section-rail a:nth-child(2) span { transition-delay:.18s; }
.section-rail a:nth-child(3) span { transition-delay:.12s; }
.section-rail a:nth-child(4) span { transition-delay:.06s; }
.section-rail a:nth-child(5) span { transition-delay:0s; }
.section-rail.is-expanded a:nth-child(1) span { transition-delay:0s; }
.section-rail.is-expanded a:nth-child(2) span { transition-delay:.06s; }
.section-rail.is-expanded a:nth-child(3) span { transition-delay:.12s; }
.section-rail.is-expanded a:nth-child(4) span { transition-delay:.18s; }
.section-rail.is-expanded a:nth-child(5) span { transition-delay:.24s; }
.section-rail a.is-active i { width:.34rem; height:.34rem; background:currentColor; opacity:1; }
.section-rail.is-expanded a.is-active i,.section-rail:focus-within a.is-active i { width:2rem; border-radius:1rem; }
.section-rail a:focus-visible { outline:0; }
.section-rail a:focus-visible i { box-shadow:0 0 0 3px rgba(128,128,128,.38); }
.section-rail.is-traveling a.is-origin.is-active i { width:1rem; opacity:.62; transform:scaleY(.78); }
.section-rail.is-traveling a.is-active:not(.is-origin) i { width:.46rem; border-radius:50%; background:currentColor; opacity:1; transform:scale(1.08); }
.section-rail a.is-settling i { animation:rail-arrive .72s cubic-bezier(.22,.72,.18,1) both; }

.hero { position:sticky; z-index:1; top:0; height:100svh; min-height:680px; overflow:hidden; background:#14191c; color:white; }
.hero>img { height:108%; object-fit:cover; object-position:center; animation:hero-in 1.5s var(--ease) both; }
.hero-shade { position:absolute; inset:0; background:linear-gradient(180deg,rgba(0,0,0,.14),rgba(0,0,0,.02) 45%,rgba(0,0,0,.62)); }
.hero h1 { position:absolute; z-index:2; left:var(--pad); right:var(--pad); bottom:8.5vh; margin:0; font-size:clamp(3.8rem,10.8vw,10.5rem); line-height:.78; letter-spacing:-.075em; font-weight:650; animation:type-in 1.1s .15s var(--ease) both; }
.hero h1 span,.section-heading h2 span,.manifesto h2 span,.manifesto h2 em,.sticky-title h2 span,.contact>a span { display:block; white-space:nowrap; }
.sample-flag { position:absolute; z-index:2; top:6.5rem; right:var(--pad); margin:0; padding:.55rem .75rem; background:var(--impact); color:var(--ink); font:700 .62rem/1 var(--font-geist-mono); letter-spacing:.08em; }
.hero-meta { position:absolute; z-index:2; left:var(--pad); right:var(--pad); bottom:1.8rem; display:grid; grid-template-columns:1fr 1fr 1fr; font:500 .65rem/1 var(--font-geist-mono); letter-spacing:.08em; }
.hero-meta span:nth-child(2) { text-align:center; }
.hero-meta span:last-child { text-align:right; }
.scroll-cue { position:absolute; z-index:2; right:var(--pad); bottom:6rem; display:flex; align-items:center; gap:.65rem; font:500 .62rem/1 var(--font-geist-mono); text-transform:uppercase; }
.scroll-cue span { display:block; width:3.5rem; height:1px; background:currentColor; }

.works-section { z-index:2; padding:calc(var(--section-y) + var(--scene-overlap)) var(--pad) var(--section-y); background:var(--paper); }
.section-heading { display:grid; grid-template-columns:2fr 7fr 3fr; align-items:start; margin-bottom:5rem; }
.section-heading>p,.section-heading>span,.manifesto>p,.sticky-title>p,.contact>p { margin:0; font:600 .65rem/1.2 var(--font-geist-mono); text-transform:uppercase; letter-spacing:.09em; }
.section-heading h2 { margin:-.08em 0 0; font-size:clamp(3.2rem,7.8vw,8rem); line-height:.82; letter-spacing:-.065em; font-weight:600; }
.section-heading>span { justify-self:end; color:#67665f; }
.filters { min-width:0; display:flex; justify-content:flex-end; gap:.4rem; margin:0; padding:0 0 1.25rem; border:0; border-bottom:1px solid rgba(17,17,15,.25); }
.filters button { border:0; background:none; padding:.5rem .7rem; font:600 .62rem/1 var(--font-geist-mono); cursor:pointer; opacity:.45; }
.filters button.is-active { background:var(--ink); color:var(--paper); opacity:1; }
.works-grid { display:grid; grid-template-columns:repeat(12,minmax(0,1fr)); gap:clamp(3rem,8vw,9rem) 1.25rem; padding-top:2rem; }
.work { grid-column:span 12; }
.work--portrait { grid-column:2/span 4; }
.work--wide { grid-column:7/span 6; align-self:end; margin-top:16rem; }
.work--feature { grid-column:1/span 12; }
.work--beauty { grid-column:1/span 5; }
.work--documentary { grid-column:7/span 6; margin-top:14rem; }
.work--square { grid-column:4/span 6; }
.work-media { position:relative; overflow:hidden; background:#24251f; }
.work--hero .work-media { aspect-ratio:16/8.2; }
.work--portrait .work-media { aspect-ratio:4/5; }
.work--wide .work-media { aspect-ratio:3/2; }
.work--feature .work-media { aspect-ratio:16/7.5; }
.work--beauty .work-media { aspect-ratio:4/5; }
.work--documentary .work-media { aspect-ratio:3/2; }
.work--square .work-media { aspect-ratio:1; }
.work-media img { height:100%; object-fit:cover; transition:transform .8s var(--ease),filter .4s ease; }
.view-label { position:absolute; top:50%; left:50%; display:grid; place-items:center; width:6.5rem; aspect-ratio:1; border-radius:50%; background:var(--impact); color:var(--ink); font:700 .62rem/1 var(--font-geist-mono); transform:translate(-50%,-40%) scale(.8); opacity:0; transition:.35s var(--ease); }
.work a:hover img { transform:scale(1.025); filter:brightness(.78); }
.work a:hover .view-label,.work a:focus-visible .view-label { opacity:1; transform:translate(-50%,-50%) scale(1); }
.work-caption { display:grid; grid-template-columns:3rem minmax(0,1fr) minmax(9rem,auto) auto; gap:1rem; align-items:baseline; padding-top:.8rem; font:500 .64rem/1.2 var(--font-geist-mono); text-transform:uppercase; }
.work-caption h3 { margin:0; font:600 clamp(1.2rem,2vw,2rem)/1 var(--font-geist-sans); text-transform:none; letter-spacing:-.04em; }
.work-caption p { margin:0; color:#68675f; }

.manifesto { --about-pad:clamp(2.5rem,7vw,8rem); z-index:3; min-height:132svh; display:grid; grid-template-rows:auto minmax(22rem,1fr) auto; padding:calc(var(--section-y) + var(--scene-overlap)) var(--about-pad) clamp(6rem,12vh,10rem); overflow:hidden; background:var(--ink); color:var(--paper); }
.manifesto h2 { align-self:center; max-width:16ch; margin:clamp(4rem,9vh,8rem) 0; font-size:clamp(3.6rem,8.2vw,9rem); line-height:.86; letter-spacing:-.065em; font-weight:650; }
.manifesto h2 span,.manifesto h2 em { white-space:normal; }
.manifesto h2 em { font-family:Georgia,serif; font-weight:400; }
.manifesto h2 em { color:var(--impact); }
.manifesto-copy { align-self:end; display:grid; grid-template-columns:1fr 1fr; gap:clamp(2.5rem,6vw,6rem); width:min(64rem,72%); margin-left:auto; padding-top:clamp(1.5rem,3vw,2.5rem); border-top:1px solid rgba(238,234,222,.3); }
.manifesto-copy p { max-width:26ch; margin:0; font-size:clamp(1.1rem,1.55vw,1.6rem); line-height:1.55; letter-spacing:-.02em; word-break:keep-all; }

.capabilities { z-index:4; display:grid; grid-template-columns:5fr 7fr; gap:clamp(3rem,6vw,7rem); padding:calc(var(--section-y) + var(--scene-overlap)) var(--pad) var(--section-y); background:var(--paper); color:var(--ink); }
.sticky-title { position:sticky; top:3rem; align-self:start; }
.sticky-title h2 { margin:2rem 0 0; font-size:clamp(3rem,5.2vw,5.5rem); line-height:.84; letter-spacing:-.06em; }
.capabilities ol { margin:0; padding:0; list-style:none; }
.capabilities li { display:grid; grid-template-columns:3rem 1fr; padding:2rem 0 2.5rem; border-top:1px solid rgba(17,17,15,.24); }
.capabilities li span,.capabilities li p { font:500 .62rem/1.4 var(--font-geist-mono); letter-spacing:.06em; text-transform:uppercase; color:#8c8a82; }
.capabilities li strong { font-size:clamp(1.8rem,3.6vw,4rem); line-height:1; letter-spacing:-.045em; font-weight:500; }
.capabilities li p { grid-column:2; margin:.85rem 0 0; }

.contact { z-index:5; min-height:88svh; display:flex; flex-direction:column; justify-content:space-between; padding:calc(4rem + var(--scene-overlap)) var(--pad) 2rem; background:var(--ink); color:var(--paper); }
.contact-action { display:flex; align-items:flex-end; gap:clamp(1rem,2.5vw,2.5rem); }
.contact-action>a { align-self:flex-start; font-size:clamp(3.5rem,8.8vw,9rem); line-height:.8; letter-spacing:-.075em; font-weight:650; }
.contact-action>a span { position:relative; display:block; width:max-content; max-width:100%; white-space:nowrap; }
.contact-action>a span::after { content:''; position:absolute; left:0; right:0; bottom:-.06em; height:.055em; background:currentColor; transform-origin:left; transition:transform .45s var(--ease); }
.contact-action>a:hover span::after { transform:scaleX(.35); }
.copy-email { flex:0 0 auto; display:flex; align-items:center; gap:.7rem; min-height:3.2rem; margin-bottom:.35rem; padding:.2rem 1rem .2rem .3rem; border:1px solid rgba(238,234,222,.5); border-radius:999px; background:transparent; color:var(--paper); cursor:pointer; font:600 .62rem/1 var(--font-geist-mono); letter-spacing:.06em; text-transform:uppercase; transition:color .35s ease,background .35s ease,border-color .35s ease,transform .45s var(--ease); }
.copy-email svg { width:2.55rem; height:2.55rem; padding:.65rem; border-radius:50%; background:var(--impact); color:var(--paper); fill:none; stroke:currentColor; stroke-width:1.7; stroke-linecap:square; stroke-linejoin:miter; transition:transform .5s var(--ease); }
.copy-email:hover,.copy-email:focus-visible,.copy-email.is-copied { color:var(--ink); background:var(--paper); border-color:var(--paper); transform:translateY(-.18rem); }
.copy-email:hover svg,.copy-email:focus-visible svg,.copy-email.is-copied svg { transform:rotate(-7deg) scale(1.04); }
.contact-meta { display:grid; grid-template-columns:1fr 1fr 1fr; border-top:1px solid var(--line); padding-top:1rem; font:600 .62rem/1 var(--font-geist-mono); }
.contact-meta span:nth-child(2) { text-align:center; }
.contact-meta span:last-child { text-align:right; }

[data-reveal] { opacity:0; transform:translateY(1.5rem); transition:opacity .8s var(--ease),transform .8s var(--ease); }
[data-reveal].is-visible { opacity:1; transform:translateY(0); }
@keyframes hero-in { from { opacity:0; transform:scale(1.08); } to { opacity:1; transform:scale(1); } }
@keyframes type-in { from { opacity:0; transform:translateY(2rem); } to { opacity:1; transform:translateY(0); } }
@keyframes rail-arrive {
  0%,18% { width:.46rem; border-radius:50%; background:currentColor; opacity:1; transform:scale(1.08); }
  52% { width:1rem; border-radius:1rem; background:currentColor; opacity:.88; transform:scaleY(.88); }
  100% { width:2rem; border-radius:1rem; background:currentColor; opacity:1; transform:none; }
}

@media (max-width:1024px) {
  .section-heading { grid-template-columns:1fr; gap:1.5rem; }
  .section-heading>span { justify-self:start; }
  .capabilities { grid-template-columns:1fr; }
  .sticky-title { position:static; }
}

@media (max-width:760px) {
  .desktop-nav { display:none; }
  .site-header { align-items:center; justify-content:flex-start; }
  .site-header.menu-is-open { color:var(--paper); mix-blend-mode:normal; }
  .brand { margin-left:auto; text-align:right; }
  .menu-button { order:-1; display:block; border:1px solid currentColor; background:none; padding:.55rem .7rem; text-transform:uppercase; cursor:pointer; }
  .section-rail { display:none; }
  .mobile-menu { position:fixed; z-index:15; inset:0; display:flex; visibility:hidden; flex-direction:column; justify-content:center; padding:var(--pad); border-top:4px solid var(--impact); background:var(--ink); color:var(--paper); clip-path:inset(0 0 100% 0 round 0 0 50% 50%); transform:translateY(-2%); transition:clip-path .9s var(--ease-silk),transform .9s var(--ease-silk),visibility 0s .9s; }
  .mobile-menu.is-open { visibility:visible; clip-path:inset(0 round 0); transform:translateY(0); transition:clip-path .9s var(--ease-silk),transform .9s var(--ease-silk),visibility 0s; }
  .mobile-menu a { opacity:0; transform:translateY(-1.5rem); font-size:clamp(3.5rem,18vw,6rem); line-height:.88; letter-spacing:-.07em; transition:opacity .45s ease,transform .7s var(--ease-silk); }
  .mobile-menu a:nth-child(1) { transition-delay:.32s; }
  .mobile-menu a:nth-child(2) { transition-delay:.24s; }
  .mobile-menu a:nth-child(3) { transition-delay:.16s; }
  .mobile-menu a:nth-child(4) { transition-delay:.08s; }
  .mobile-menu a:nth-child(5) { transition-delay:0s; }
  .mobile-menu.is-open a { opacity:1; transform:translateY(0); }
  .mobile-menu.is-open a:nth-child(1) { transition-delay:.16s; }
  .mobile-menu.is-open a:nth-child(2) { transition-delay:.22s; }
  .mobile-menu.is-open a:nth-child(3) { transition-delay:.28s; }
  .mobile-menu.is-open a:nth-child(4) { transition-delay:.34s; }
  .mobile-menu.is-open a:nth-child(5) { transition-delay:.4s; }
  .hero { min-height:620px; }
  .hero>img { object-position:58% center; }
  .hero h1 { bottom:8rem; font-size:clamp(3rem,14vw,4.1rem); line-height:.82; letter-spacing:-.06em; }
  .sample-flag { top:5.2rem; right:auto; left:var(--pad); }
  .hero-meta { grid-template-columns:1fr auto; }
  .hero-meta span:nth-child(2),.scroll-cue { display:none; }
  .section-heading h2 { font-size:clamp(2.75rem,12.5vw,4rem); line-height:.86; }
  .filters { justify-content:flex-start; overflow-x:auto; }
  .works-grid { display:flex; flex-direction:column; gap:4.5rem; }
  .work--wide,.work--documentary { margin-top:0; }
  .work--hero .work-media,.work--wide .work-media,.work--feature .work-media,.work--documentary .work-media { aspect-ratio:4/5; }
  .work-caption { grid-template-columns:2rem 1fr auto; }
  .work-caption p { grid-column:2; }
  .manifesto { --about-pad:var(--pad); min-height:118svh; grid-template-rows:auto minmax(18rem,1fr) auto; padding-bottom:5rem; }
  .manifesto h2 { margin:3.5rem 0 5rem; font-size:11vw; line-height:.92; letter-spacing:-.05em; }
  .manifesto-copy { grid-template-columns:1fr; gap:1.4rem; width:100%; }
  .capabilities { gap:5rem; }
  .capabilities li { grid-template-columns:2.3rem 1fr; }
  .contact { min-height:72svh; padding-top:var(--section-y); }
  .contact-action { align-items:flex-start; flex-direction:column; }
  .contact-action>a { font-size:10.4vw; line-height:.88; letter-spacing:-.055em; }
  .copy-email { margin:1rem 0 0; }
  .contact-meta { grid-template-columns:1fr; gap:.7rem; }
  .contact-meta span:nth-child(2),.contact-meta span:last-child { text-align:left; }
}

@media (prefers-reduced-motion:reduce) {
  html { scroll-behavior:auto; }
  *,*::before,*::after { animation-duration:.01ms!important; animation-iteration-count:1!important; transition-duration:.01ms!important; }
  .section-rail i { transition-duration:.22s!important; }
  .section-rail a.is-settling i { animation-duration:.38s!important; }
  [data-reveal] { opacity:1; transform:none; }
  .scene-transition .work-media img { scale:1; }
}
