:root{--bg:#0b0b0b;--fg:#f2f2f0;--fg-dim:rgba(242,242,240,0.65);--fg-faint:rgba(242,242,240,0.4);--accent:#f2f2f0;--overlay-scrim:rgba(0,0,0,0.45);--transition-speed:550ms}*{box-sizing:border-box}html,body{min-height:100%;margin:0}html{scrollbar-gutter:stable}body{background:var(--bg);color:var(--fg);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif;overflow-x:hidden}body.is-scroll-locked{position:fixed;left:0;right:0;top:var(--scroll-lock-top,0);width:100%;overflow:hidden}a{color:inherit;text-decoration:none}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.skip-link{position:absolute;top:-100px;left:12px;z-index:100;background:var(--bg);color:var(--fg);padding:10px 16px;border:1px solid var(--fg)}.skip-link:focus{top:12px}.theme-dark{--fg:#141414;--fg-dim:rgba(20,20,20,0.65);--fg-faint:rgba(20,20,20,0.4)}.site-logo{position:fixed;top:28px;left:28px;z-index:40;display:block}.site-logo img{height:30px;width:auto;display:block;transition:opacity 300ms ease}.site-nav{position:fixed;top:90px;left:28px;z-index:40;display:flex;flex-direction:column;gap:18px}.site-nav a{writing-mode:vertical-rl;transform:rotate(180deg);font-size:0.72rem;letter-spacing:0.18em;text-transform:uppercase;color:var(--fg-dim);transition:color 200ms ease}.site-nav a:hover,.site-nav a:focus-visible,.site-nav a[aria-current="page"]{color:var(--fg)}.site-nav{transition:opacity 200ms ease}body.is-viewer-open .site-nav{opacity:0;pointer-events:none}.category-nav{position:fixed;top:28px;left:50%;transform:translateX(-50%);z-index:40;display:flex;gap:22px;max-width:min(84vw,900px);overflow-x:auto;scrollbar-width:none;padding-bottom:2px;transition:opacity 200ms ease}.category-nav::-webkit-scrollbar{display:none}.category-nav a{color:var(--fg-dim);font-size:0.72rem;letter-spacing:0.14em;text-transform:uppercase;white-space:nowrap;padding:4px 2px;border-bottom:1px solid transparent;transition:color 200ms ease,border-color 200ms ease}.category-nav a:hover,.category-nav a:focus-visible{color:var(--fg)}.category-nav a[aria-current="page"]{color:var(--fg);border-bottom-color:var(--fg)}body.is-viewer-open .category-nav{opacity:0;pointer-events:none}.photo-grid{--grid-gutter:8px;--grid-col-min:130px;--grid-pad-x:18px;display:grid;grid-template-columns:repeat(auto-fill,minmax(var(--grid-col-min),1fr));grid-auto-rows:1px;grid-auto-flow:row dense;column-gap:var(--grid-gutter);row-gap:0;max-width:2400px;margin:0 auto;padding:96px var(--grid-pad-x) calc(96px - var(--grid-gutter))}.grid-tile{grid-row-end:span var(--span,20);margin-bottom:var(--grid-gutter);position:relative;display:block;overflow:hidden;background:rgba(255,255,255,0.04)}.grid-tile.is-wide{grid-column-end:span 2}.grid-img{width:100%;height:100%;object-fit:cover;display:block;transition:opacity 200ms ease,transform 550ms ease;-webkit-user-drag:none;user-select:none;-webkit-touch-callout:none}.grid-tile:hover .grid-img,.grid-tile:focus-visible .grid-img{opacity:0.82;transform:scale(1.02)}.grid-tile:focus-visible{outline:1px solid var(--fg);outline-offset:2px}.grid-tile-title{position:absolute;left:0;right:0;bottom:0;padding:28px 12px 10px;font-size:0.72rem;letter-spacing:0.04em;color:#f2f2f0;background:linear-gradient(180deg,transparent,rgba(0,0,0,0.62));opacity:0;transition:opacity 200ms ease;pointer-events:none}.grid-tile:hover .grid-tile-title,.grid-tile:focus-visible .grid-tile-title{opacity:1}@media (min-width:480px){.photo-grid{--grid-gutter:10px;--grid-col-min:170px;--grid-pad-x:18px}}@media (min-width:768px){.photo-grid{--grid-gutter:12px;--grid-col-min:200px;--grid-pad-x:64px}}@media (min-width:1280px){.photo-grid{--grid-gutter:14px;--grid-col-min:260px;--grid-pad-x:72px}}@media (min-width:1800px){.photo-grid{--grid-gutter:16px;--grid-col-min:310px;--grid-pad-x:72px}}body.grid-page::before,body.grid-page::after{content:"";position:fixed;left:0;right:0;height:132px;z-index:10;pointer-events:none;transition:opacity 200ms ease}body.grid-page::before{top:0;background:linear-gradient(180deg,var(--bg) 0%,rgba(11,11,11,0.86) 42%,transparent 100%)}body.grid-page::after{bottom:0;height:104px;background:linear-gradient(0deg,var(--bg) 0%,rgba(11,11,11,0.86) 42%,transparent 100%)}body.grid-page.is-viewer-open::before,body.grid-page.is-viewer-open::after{opacity:0}.viewer{position:fixed;inset:0;z-index:20;background:var(--bg);visibility:hidden;opacity:0;pointer-events:none;overscroll-behavior:contain;transition:opacity 200ms ease}body.is-viewer-open .viewer{visibility:visible;opacity:1;pointer-events:auto}.viewer-close{position:fixed;top:28px;right:28px;z-index:41;width:40px;height:40px;border:1px solid var(--fg-faint);border-radius:50%;background:none;color:var(--fg);font-size:1.1rem;line-height:1;cursor:pointer;transition:border-color 200ms ease,background 200ms ease}.viewer-close:hover,.viewer-close:focus-visible{border-color:var(--fg);background:rgba(255,255,255,0.06)}.slider{position:relative;width:100vw;height:100dvh}.slide{position:absolute;inset:0;overflow:hidden;opacity:0;visibility:hidden;transition:opacity var(--transition-speed) ease;pointer-events:none}.slide.is-active{opacity:1;visibility:visible;pointer-events:auto}.slide-bg{position:absolute;inset:0;z-index:0;width:100%;height:100%;object-fit:cover;display:block;transform:scale(1.15);filter:blur(12px)}.slide-fg{position:relative;z-index:1;width:100%;height:100%;object-fit:contain;display:block;-webkit-user-drag:none;user-select:none;-webkit-touch-callout:none}.slide-bg{-webkit-user-drag:none;user-select:none;-webkit-touch-callout:none}.slide-caption{position:fixed;left:28px;bottom:28px;z-index:30;max-width:60vw}.slide-caption .title{color:var(--fg);font-size:0.95rem;letter-spacing:0.02em;transition:color 200ms ease}.slide-caption .counter{margin-top:4px;font-size:0.7rem;color:var(--fg-faint);letter-spacing:0.08em}.slide-caption .title:empty::before{content:"Untitled";color:var(--fg-faint);font-style:italic}.site-contact{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);z-index:40;font-size:0.7rem;letter-spacing:0.1em;color:var(--fg-faint);border-bottom:1px solid transparent;transition:color 200ms ease,border-color 200ms ease}.site-contact:hover,.site-contact:focus-visible{color:var(--fg);border-color:var(--fg)}.slide-nav{position:fixed;right:28px;bottom:28px;z-index:40;display:flex;flex-direction:column;gap:10px}.slide-nav button{background:none;border:1px solid var(--fg-faint);color:var(--fg);width:40px;height:40px;border-radius:50%;font-size:1rem;line-height:1;cursor:pointer;transition:border-color 200ms ease,background 200ms ease}.slide-nav button:hover,.slide-nav button:focus-visible{border-color:var(--fg);background:rgba(255,255,255,0.06)}.slide-nav button:disabled{opacity:0.3;cursor:default}.about-page{min-height:100dvh;display:flex;align-items:center;justify-content:center;padding:140px 28px 100px}.about-content{max-width:1180px;width:100%;display:flex;align-items:flex-start;gap:clamp(1.6rem,4vw,3.2rem)}.about-media{flex:1 1 42%;min-width:0;margin:0}.about-portrait{width:100%;height:auto;aspect-ratio:4 / 5;object-fit:cover;display:block}.about-text{flex:1 1 54%;min-width:0}.about-quote{font-style:italic;font-size:1.1rem;margin:0 0 24px}.about-body{color:var(--fg-dim);line-height:1.7;margin:0 0 40px}.about-links h2{font-size:0.75rem;letter-spacing:0.14em;text-transform:uppercase;color:var(--fg-faint);margin:0 0 14px}.about-links ul{list-style:none;padding:0;margin:0 0 40px;display:flex;flex-direction:column;gap:10px}.about-links a{color:var(--fg-dim);border-bottom:1px solid transparent;transition:color 200ms ease,border-color 200ms ease}.about-links a:hover,.about-links a:focus-visible{color:var(--fg);border-color:var(--fg)}.back-to-gallery{display:inline-block;font-size:0.75rem;letter-spacing:0.14em;text-transform:uppercase;border-bottom:1px solid var(--fg-faint);padding-bottom:2px}.back-to-gallery:hover,.back-to-gallery:focus-visible{border-color:var(--fg)}.back-to-gallery--top{margin-bottom:28px}.about-license{margin:0 0 40px}.about-license h2{font-size:0.75rem;letter-spacing:0.14em;text-transform:uppercase;color:var(--fg-faint);margin:0 0 14px}.about-license-body{color:var(--fg-dim);line-height:1.7;margin:0;max-width:46ch}.about-contact{margin-top:4px}.about-contact h2{font-size:0.75rem;letter-spacing:0.14em;text-transform:uppercase;color:var(--fg-faint);margin:0 0 14px}.about-contact-intro{color:var(--fg-dim);line-height:1.7;margin:0 0 24px;max-width:46ch}.contact-form{display:flex;flex-direction:column;gap:18px;max-width:440px}.contact-form .field{display:flex;flex-direction:column;gap:6px}.contact-form label{font-size:0.68rem;letter-spacing:0.12em;text-transform:uppercase;color:var(--fg-faint)}.contact-form input,.contact-form textarea{background:rgba(255,255,255,0.04);border:1px solid var(--fg-faint);color:var(--fg);font:inherit;font-size:0.9rem;padding:10px 12px;transition:border-color 200ms ease,background 200ms ease}.contact-form textarea{resize:vertical;min-height:120px}.contact-form input:focus,.contact-form textarea:focus{outline:none;border-color:var(--fg);background:rgba(255,255,255,0.06)}.contact-form .field--hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}.contact-submit{align-self:flex-start;margin-top:4px;background:none;border:1px solid var(--fg);color:var(--fg);font:inherit;font-size:0.72rem;letter-spacing:0.14em;text-transform:uppercase;padding:11px 22px;cursor:pointer;transition:background 200ms ease,color 200ms ease}.contact-submit:hover,.contact-submit:focus-visible{background:var(--fg);color:var(--bg)}.form-response{max-width:560px;text-align:center}.form-response h1{font-size:1.4rem;font-weight:500;margin:0 0 18px}.form-response .about-body{margin-bottom:32px}@media (max-width:768px){.about-content{flex-direction:column}.about-media{flex:none;width:100%;max-width:340px}}@media (max-width:640px){.site-logo{top:18px;left:18px}.site-logo img{height:24px}.site-nav{top:18px;left:auto;right:18px;flex-direction:row;gap:14px}.site-nav a{writing-mode:horizontal-tb;transform:none;font-size:0.65rem}.category-nav{top:auto;bottom:84px;left:18px;right:70px;transform:none;max-width:none;gap:16px}.slide-caption{left:18px;bottom:18px;max-width:70vw}.slide-nav{right:18px;bottom:18px}.slide-nav button{width:34px;height:34px}.viewer-close{top:18px;right:18px;width:34px;height:34px}.about-page{padding:110px 18px 80px}}@media (prefers-reduced-motion:reduce){.slide{transition:none}.grid-img{transition:none}.grid-tile:hover .grid-img{transform:none}}