@font-face{font-family:Now;src:url('fonts/Now-Regular.otf') format('opentype');font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:Now;src:url('fonts/Now-Light.otf') format('opentype');font-weight:300;font-style:normal;font-display:swap}
@font-face{font-family:Now;src:url('fonts/Now-Medium.otf') format('opentype');font-weight:500;font-style:normal;font-display:swap}
/* Komorebi brand lettering uses exact vector outlines from the supplied PDF.
   The full matching Komorebi font is pending; no lookalike font is substituted. */
:root{--paper:#f8f4ee;--ink:#151515;--sand:#c9bfb3;--stone:#7a746e;--clay:#8f5745;--rail:204px;--page-gutter:clamp(28px,5.1vw,88px);--ease:cubic-bezier(.22,1,.36,1);--rule:color-mix(in srgb,var(--sand) 64%,var(--paper));--layer-nav:20}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:100px}body{margin:0;background:var(--paper);color:var(--ink);font-family:Now,sans-serif;font-size:1rem;font-weight:400;line-height:1.6;-webkit-font-smoothing:antialiased}body.is-locked{overflow:hidden}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;cursor:pointer;background:none;border:0;padding:0}a{color:inherit;text-decoration:none}button,a{touch-action:manipulation}button:active,.text-link:active{transform:translateY(1px)}:focus-visible{outline:2px solid var(--clay);outline-offset:6px}img{display:block;max-width:100%;height:auto}svg{width:21px;height:21px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;flex:none}h1,h2,h3,p,figure{margin:0}h2,h3{font-weight:400}button[hidden],[hidden]{display:none!important}::selection{background:var(--sand);color:var(--ink)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip-link{position:fixed;top:12px;left:12px;padding:12px 18px;background:var(--ink);color:var(--paper);z-index:100;transform:translateY(-160%)}.skip-link:focus{transform:none}.eyebrow,.hero-topline,.brand-discipline{font-size:.625rem;text-transform:uppercase;letter-spacing:.18em;line-height:1.6}.text-link{display:inline-flex;align-items:center;gap:18px;min-height:44px;font-size:.75rem;position:relative}.text-link svg{transition:transform 250ms var(--ease)}.text-link::after{content:"";position:absolute;bottom:7px;left:0;right:39px;height:1px;background:var(--clay);transform:scaleX(0);transform-origin:left;transition:transform 250ms var(--ease)}.text-link:hover::after{transform:scaleX(1)}.text-link:hover svg{transform:translate(2px,-2px)}.explore-link:hover svg{transform:translateY(4px)}
/* A quiet, persistent margin for the work. */
.mobile-header{height:80px;display:flex;align-items:center;justify-content:space-between;padding:12px 20px;position:relative;z-index:calc(var(--layer-nav) + 1);background:var(--paper)}.mobile-header>span{font-size:.625rem;text-transform:uppercase;letter-spacing:.1em}.mobile-brand{padding:4px}.menu-toggle{display:flex;align-items:center;gap:12px;min-height:44px;min-width:44px;font-size:.75rem}.menu-label{display:none}.menu-lines{position:relative;width:22px;height:14px}.menu-lines::before,.menu-lines::after{content:"";position:absolute;left:0;right:0;height:1px;background:var(--ink);transition:transform 260ms var(--ease)}.menu-lines::before{top:3px}.menu-lines::after{bottom:3px}.menu-toggle[aria-expanded=true] .menu-lines::before{transform:translateY(3.5px) rotate(45deg)}.menu-toggle[aria-expanded=true] .menu-lines::after{transform:translateY(-3.5px) rotate(-45deg)}.rail{position:fixed;inset:80px auto 0 0;width:280px;padding:36px 32px;z-index:var(--layer-nav);background:var(--paper);display:flex;flex-direction:column;transform:translateX(-102%);visibility:hidden;transition:transform 320ms var(--ease),visibility 320ms}.rail.is-open{transform:none;visibility:visible}.rail-brand{display:none}.rail nav{display:flex;flex-direction:column;align-items:flex-start;gap:4px}.rail nav>a,.rail nav>button{font-size:1rem;min-height:44px;display:flex;gap:16px;align-items:center;position:relative;transition:transform 220ms var(--ease)}.rail nav>a::before{content:"";height:1px;width:14px;background:var(--clay);position:absolute;left:-24px}.rail nav>button:hover{transform:translateX(4px)}.soon{font-size:.5625rem;letter-spacing:.06em;color:var(--stone)}.rail-bottom{margin-top:auto;padding-top:40px}.rail-signature{display:block;font-size:.625rem;color:var(--stone);margin-bottom:24px}.preview-note{text-align:left;font-size:.625rem;line-height:1.9;min-height:44px}.preview-note span{color:var(--stone)}.nav-scrim{position:fixed;inset:80px 0 0;background:rgb(21 21 21 / .22);z-index:calc(var(--layer-nav) - 1)}
main{padding:0 20px;max-width:1800px;margin:auto}.hero{padding-top:22px}.hero-topline{display:flex;justify-content:space-between;color:var(--stone);font-size:.5625rem}.hero-topline span:last-child{display:none}.hero-composition{position:relative;margin-top:28px}.hero-figure{width:100%}.hero-image-window{overflow:hidden;background:var(--sand);aspect-ratio:4/4.4}.hero-image{width:100%;height:100%;object-fit:cover;object-position:58% center;transform:scale(1.055)}.hero-figure figcaption{display:flex;justify-content:space-between;font-size:.5625rem;color:var(--stone);margin-top:12px;letter-spacing:.06em}.hero-identity{position:relative;background:var(--paper);width:94%;padding:20px 16px 0 0;margin-top:-84px;isolation:isolate}.hero-identity h1{line-height:1}.hero-identity h1 img{width:100%;height:auto}.brand-discipline{font-size:.5625rem;letter-spacing:.18em;margin-top:13px;display:flex;gap:16px}.brand-discipline span{color:var(--stone)}.hero-bottom{display:grid;gap:18px;padding:36px 0 68px}.hero-bottom>p{font-size:.875rem;line-height:1.85;font-weight:300;max-width:38ch}.explore-link{justify-self:start}.work{padding-top:36px;scroll-margin-top:26px}.work-heading{display:flex;align-items:flex-end;justify-content:space-between;margin-bottom:32px}.work-heading .eyebrow{color:var(--stone);font-size:.5625rem;margin-bottom:10px}h2{font-size:clamp(1.65rem,2.55vw,2.4rem);font-weight:300;line-height:1.25;letter-spacing:-.035em}.collection-note{display:none;font-size:.6875rem;font-weight:300;line-height:1.85}.filter-bar{border-top:1px solid var(--rule);margin-bottom:36px}.section-filters{display:flex;gap:28px}.section-filters button{font-size:.875rem;min-height:58px;position:relative;color:var(--stone)}.section-filters sup{font-size:.5rem;margin-left:4px;top:-.5em;position:relative}.section-filters button::after{content:"";position:absolute;bottom:0;height:1px;background:var(--clay);left:0;right:0;transform:scaleX(0);transform-origin:left;transition:transform 260ms var(--ease)}.section-filters button[aria-pressed=true]{color:var(--ink)}.section-filters button[aria-pressed=true]::after{transform:scaleX(1)}.category-filters{display:flex;flex-wrap:wrap;column-gap:22px;padding-top:8px}.category-filters button{min-height:44px;font-size:.6875rem;color:var(--stone)}.category-filters button[aria-pressed=true]{color:var(--clay);text-decoration:underline;text-underline-offset:5px}.category-filters button:hover{color:var(--ink)}
/* Individual figures, without card chrome. DOM order is also reading order. */
.gallery{display:grid;grid-template-columns:minmax(0,1fr);gap:40px}.project{min-width:0}.project-button{width:100%;display:block;text-align:left}.project-image-window{overflow:hidden;position:relative;background:var(--sand);aspect-ratio:var(--ratio,1.5)}.project-image-window img{width:100%;height:100%;object-fit:cover;object-position:var(--focus,center);transition:transform 650ms var(--ease)}.project-image-window.is-broken{display:grid;place-items:center;min-height:180px;padding:24px}.project-image-window.is-broken::after{content:"Image unavailable. Open to retry.";font-size:.75rem}.project-image-window.is-broken img{display:none}.project-button:hover .project-image-window img{transform:scale(1.025)}.project-button:focus-visible{outline-offset:8px}.project-caption{display:flex;align-items:baseline;justify-content:space-between;gap:16px;margin-top:15px}.project-caption h3{font-size:.8125rem;letter-spacing:-.015em}.project-meta{font-size:.5625rem;color:var(--stone);white-space:nowrap}.project-category{display:block;margin-top:3px;font-size:.625rem;color:var(--stone)}.view-mark{position:absolute;bottom:16px;right:16px;color:var(--ink);background:var(--paper);width:34px;height:34px;display:grid;place-items:center;opacity:0;transform:translateY(5px);transition:opacity 220ms var(--ease),transform 220ms var(--ease)}.view-mark svg{width:17px;height:17px}.project-button:hover .view-mark,.project-button:focus-visible .view-mark{opacity:1;transform:none}.play-mark{position:absolute;inset:0;display:grid;place-items:center}.play-mark>span{display:grid;place-items:center;width:60px;height:60px;border-radius:50%;background:var(--paper);transition:transform 240ms var(--ease)}.project-button:hover .play-mark>span{transform:scale(1.07)}.play-mark svg{width:21px;height:21px;fill:var(--ink);stroke:none;margin-left:3px}.film-note{font-size:.75rem;color:var(--stone);max-width:48ch;margin-top:20px;line-height:1.8}.gallery-empty{padding:64px 0;font-weight:300}.gallery-end{padding:72px 0 68px;display:flex;flex-direction:column;align-items:center;gap:20px;text-align:center}.short-rule{display:block;width:24px;height:1px;background:var(--sand)}.gallery-end>p{font-weight:300;font-size:.875rem}.gallery-end .text-link{color:var(--stone);font-size:.625rem}.footer{display:flex;flex-direction:column;gap:8px;align-items:flex-start;padding:28px 0 max(32px,env(safe-area-inset-bottom));border-top:1px solid var(--rule)}.footer>img{width:180px;margin-bottom:10px}.footer>p{font-size:.625rem;color:var(--stone)}.footer>.text-link{font-size:.625rem;color:var(--stone)}
/* Native dialogs provide focus containment, Escape dismissal and inert background. */
dialog{border:0;background:var(--paper);color:var(--ink);padding:0;max-height:calc(100dvh - 32px)}dialog::backdrop{background:rgb(21 21 21 / .72)}dialog[open]{animation:dialog-enter 320ms var(--ease)}.close-button{display:flex;align-items:center;gap:12px;min-height:44px;font-size:.75rem}.close-button svg{width:20px;height:20px}.viewer{width:calc(100% - 24px);max-width:1500px;padding:12px 16px}.viewer-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.viewer-top>span{font-size:.6875rem;color:var(--stone)}.viewer-stage{position:relative;min-height:140px;display:grid;place-items:center;background:color-mix(in srgb,var(--sand) 15%,var(--paper));overflow:hidden}.viewer-stage img,.viewer-stage video{width:100%;height:min(60dvh,850px);object-fit:contain}.viewer-stage.is-loading img{opacity:.22}.viewer-stage img{transition:opacity 220ms var(--ease)}.media-message{position:absolute;padding:20px;background:var(--paper);font-size:.8125rem;max-width:36ch;text-align:center}.viewer-bottom{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:18px 0 8px}.viewer-bottom h2{font-size:1rem;font-weight:400;letter-spacing:-.02em}.viewer-bottom p{font-size:.5625rem;color:var(--stone);margin-top:5px;max-width:55ch}.viewer-controls{display:flex;gap:8px}.icon-button{width:44px;height:44px;display:grid;place-items:center;border:1px solid var(--rule);transition:transform 220ms var(--ease)}.icon-button:hover{transform:translateX(2px)}.info-dialog{width:calc(100% - 32px);max-width:560px;padding:24px}.info-dialog>.close-button{margin-left:auto;margin-bottom:28px}.info-dialog>.eyebrow{color:var(--stone);font-size:.5625rem}.info-dialog h2{margin:16px 0 24px}.info-dialog #info-body{font-size:.875rem;font-weight:300;line-height:1.85}.info-dialog #info-body p+p{margin-top:16px}.info-dialog #info-body a{text-decoration:underline;text-underline-offset:3px}.info-dialog ul{padding-left:18px;margin:20px 0}.info-dialog li{margin-bottom:8px;font-size:.75rem}.info-dialog>.text-link{margin-top:28px}.no-script{padding:32px 0;font-size:.875rem}.no-script a{text-decoration:underline}
@media(min-width:640px){.menu-label{display:inline}.collection-note{display:block}.hero-bottom{grid-template-columns:1fr auto;align-items:center}.hero-bottom>p{font-size:1rem}.hero-identity{width:80%}.hero-image-window{aspect-ratio:1.5}.footer{flex-direction:row;align-items:center;gap:24px}.footer>img{margin:0}.footer>.text-link{margin-left:auto}}
@media(min-width:768px){html{scroll-padding-top:40px}.mobile-header{display:none}.nav-scrim{display:none!important}.rail{inset:0 auto 0 0;width:var(--rail);padding:48px 0 30px 40px;visibility:visible;transform:none;transition:none}.rail-brand{display:block;align-self:flex-start}.rail nav{margin-top:120px;gap:8px}.rail nav>a,.rail nav>button{font-size:.8125rem;min-height:36px}.rail nav>a::before{width:16px;left:-26px}.soon{font-size:.5rem;opacity:.85}.rail-bottom{padding-right:18px}.rail-signature{writing-mode:vertical-rl;transform:rotate(180deg);letter-spacing:.08em;margin-bottom:48px}.preview-note{font-size:.5rem}.rail nav>button .soon{opacity:0;transition:opacity 180ms var(--ease)}.rail nav>button:hover .soon,.rail nav>button:focus-visible .soon{opacity:1}main{margin-left:var(--rail);padding:0 var(--page-gutter) 0 22px;max-width:1600px}.hero{padding-top:50px}.hero-topline{font-size:.5625rem}.hero-topline span:last-child{display:block}.hero-composition{margin-top:44px;min-height:470px}.hero-figure{margin-left:16%;width:84%}.hero-image-window{aspect-ratio:1.53;min-height:400px;max-height:670px}.hero-figure figcaption{margin-top:13px;font-size:.5625rem}.hero-identity{position:absolute;left:0;bottom:22px;width:77%;margin:0;padding:24px 26px 5px 0}.brand-discipline{font-size:.625rem;margin-top:18px;gap:22px}.hero-bottom{padding:30px 0 92px;gap:24px}.hero-bottom>p{font-size:1rem;line-height:1.9}.hero-bottom .text-link{font-size:.6875rem}.work{padding-top:32px;scroll-margin-top:20px}.work-heading{margin-bottom:42px}.work-heading .eyebrow{margin-bottom:14px}.filter-bar{display:flex;justify-content:space-between;align-items:center;margin-bottom:56px;gap:24px}.section-filters{gap:30px}.category-filters{padding:0;gap:20px}.category-filters button{font-size:.625rem}.section-filters button{font-size:.8125rem;min-height:66px}.gallery{grid-template-columns:repeat(12,minmax(0,1fr));column-gap:clamp(24px,4.5vw,72px);row-gap:72px;align-items:start}.project{grid-column:span 6}.project:nth-child(6n+1){grid-column:1/8}.project:nth-child(6n+2){grid-column:9/13;margin-top:120px;--ratio:.74}.project:nth-child(6n+3){grid-column:2/6;margin-top:12px;--ratio:.77}.project:nth-child(6n+4){grid-column:7/13;margin-top:140px;--ratio:1.36}.project:nth-child(6n+5){grid-column:1/9;margin-top:36px;--ratio:1.65}.project:nth-child(6n+6){grid-column:10/13;margin-top:150px;--ratio:.68}.project:nth-child(6n+7){grid-column:4/12;margin-top:12px;--ratio:1.5}.gallery.is-filtered .project{grid-column:span 6;margin-top:0;--ratio:1.4}.gallery.is-filtered .project:nth-child(even){margin-top:96px;--ratio:.9}.gallery.is-films .project{grid-column:1/11;margin-top:0;--ratio:1.7778}.project-caption{margin-top:18px}.project-caption h3{font-size:.8125rem}.project-meta{font-size:.5625rem}.project-category{font-size:.625rem}.gallery-end{padding:112px 0 104px;gap:24px}.gallery-end>p{font-size:1rem}.footer{padding:36px 0 38px}.footer>img{width:200px}.viewer{width:calc(100% - 80px);padding:20px 32px}.viewer-stage img,.viewer-stage video{height:min(72dvh,900px)}.viewer-bottom h2{font-size:1.125rem}.viewer-bottom p{font-size:.6875rem}.info-dialog{padding:32px 40px}.info-dialog>.close-button{margin-bottom:36px}}
@media(min-width:1200px){:root{--rail:224px}.rail{padding-left:48px;padding-top:56px}.hero{padding-top:57px}.hero-topline{font-size:.625rem}.hero-composition{margin-top:42px}.hero-image-window{min-height:510px}.hero-identity{width:76%;padding:29px 40px 5px 0;bottom:28px}.hero-bottom{padding-top:40px;padding-bottom:105px}.hero-bottom>p{font-size:1.0625rem}.project-caption h3{font-size:.875rem}.project-meta{font-size:.625rem}.footer>img{width:220px}}
@media(min-width:1800px){:root{--shell-offset:calc((100% - 1800px)/2)}main{margin-left:calc(var(--shell-offset) + var(--rail));max-width:calc(1800px - var(--rail))}.hero-image-window{aspect-ratio:1.6}.rail{left:var(--shell-offset)}}
/* ScrollTimeline is compositor driven; unsupported browsers keep the still image.
   No requestAnimationFrame polling, scroll listeners or continuously running work. */
@supports(animation-timeline:scroll()){@media(prefers-reduced-motion:no-preference){.hero-image{animation:hero-parallax linear both;animation-timeline:scroll(root block);animation-range:0px 850px}.hero-identity{animation:identity-parallax linear both;animation-timeline:scroll(root block);animation-range:0px 850px}}}
@keyframes hero-parallax{from{transform:translateY(-1.5%) scale(1.08)}to{transform:translateY(4%) scale(1.08)}}
@keyframes identity-parallax{from{transform:translateY(0);opacity:1}to{transform:translateY(22px);opacity:.8}}
@keyframes dialog-enter{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation:none!important;transition:none!important}.hero-image{transform:none}.hero-identity{transform:none;opacity:1}.project-button:hover .project-image-window img,.text-link:hover svg,.rail nav>button:hover,.project-button:hover .play-mark>span{transform:none}}
.hero-bottom>p{white-space:pre-line}
.hero-image-window{width:100%;min-width:0}
html{scrollbar-gutter:stable}
:root{--muted:color-mix(in srgb,var(--stone) 90%,var(--ink))}
.hero-topline,.hero-figure figcaption,.rail-signature,.preview-note span,.soon,.work-heading .eyebrow,.section-filters button,.category-filters button,.project-meta,.project-category,.film-note,.gallery-end .text-link,.footer>p,.footer>.text-link,.viewer-top>span,.viewer-bottom p,.info-dialog>.eyebrow{color:var(--muted)}
.section-filters button[aria-pressed=true]{color:var(--ink)}
.category-filters button[aria-pressed=true]{color:var(--clay)}
.motion-toggle{display:block;font-size:.5625rem;color:var(--muted);min-height:44px;margin-top:4px}
.motion-toggle[aria-pressed=true]{color:var(--clay)}
.reduce-motion{scroll-behavior:auto}
.reduce-motion *,.reduce-motion *::before,.reduce-motion *::after{animation:none!important;transition:none!important}
.reduce-motion .hero-image,.reduce-motion .hero-identity{transform:none;opacity:1}
.reduce-motion .project-button:hover .project-image-window img,.reduce-motion .text-link:hover svg,.reduce-motion .rail nav>button:hover,.reduce-motion .project-button:hover .play-mark>span{transform:none}
@media(max-width:767px){.mobile-header{position:sticky;top:0}.hero-figure figcaption{display:none}.hero-identity{margin-top:-65px}}
@media(min-width:768px){.rail nav{gap:0}.rail nav>a,.rail nav>button{min-height:44px}.rail nav>button .soon{opacity:1}.motion-toggle{font-size:.5rem}}
