:root{--bg: #0a0a0a;--fg: #f0f0f0;--muted: #888;--card-bg: #161616;--gap: .75rem;--max-width: min(96vw, 2400px);--bg-gradient: linear-gradient( to bottom, #0d1b3a 0%, #1a0d2e 50%, #06060c 100% )}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{color-scheme:dark;-webkit-font-smoothing:antialiased;overflow-x:clip}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;background-color:var(--bg);background-image:var(--bg-gradient);background-attachment:fixed;color:var(--fg);line-height:1.5;min-height:100vh}a{color:inherit;text-decoration:none}img{display:block;max-width:100%;height:auto}main{max-width:var(--max-width);margin:0 auto;padding:3rem 1.5rem 5rem}:focus-visible{outline:2px solid #8ab8ff;outline-offset:2px;border-radius:2px}.skip-link{position:absolute;left:8px;top:-60px;z-index:200;background:var(--fg);color:var(--bg);padding:.6rem 1rem;border-radius:6px;transition:top .15s ease}.skip-link:focus{top:8px}.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}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}}.site-footer{max-width:var(--max-width);margin:0 auto;padding:2.5rem 1.5rem 3rem;padding-bottom:max(3rem,env(safe-area-inset-bottom));text-align:center;border-top:1px solid rgba(255,255,255,.07)}.footer-links{display:flex;justify-content:center;flex-wrap:wrap;gap:1.5rem;margin-bottom:.85rem}.footer-links a{color:var(--muted);font-size:.75rem;text-transform:uppercase;letter-spacing:.12em;transition:color .2s ease}.footer-links a:hover{color:var(--fg)}.footer-copy{color:var(--muted);font-size:.72rem;letter-spacing:.05em}@media(max-width:600px){main{padding:2rem 1rem 3rem}}@font-face{font-family:Instrument Sans;font-style:normal;font-display:swap;font-weight:400 700;font-stretch:75% 100%;src:url(/_astro/instrument-sans-latin.BVScPF0l.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}html[data-surface]{color-scheme:dark;--bg: #1a1a1a;--surface: #232323;--surface-2: #2b2b2b;--card: #212121;--raised: #333;--fg: #ececec;--fg-2: #a8a8a8;--fg-3: #8e8e8e;--line: #2e2e2e;--line-2: #424242;--focus: #8ab8ff;--shadow-raised: none;--muted: var(--fg-2);--card-bg: var(--card);--bg-gradient: none;--font: "Instrument Sans", system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--fs-sm: .8125rem;--fs-ui: .9375rem;--fs-body: 1.0625rem;--fs-title: clamp(1.5rem, 1.1rem + 1.2vw, 2rem);--pad-x: clamp(1rem, 3vw, 2.5rem);--gap: 10px;--radius: 3px}html[data-surface][data-theme=light]{color-scheme:light;--bg: #f3f3f1;--surface: #e6e6e3;--surface-2: #ececea;--card: #fff;--raised: #fff;--fg: #171717;--fg-2: #555;--fg-3: #636363;--line: #dcdcd9;--line-2: #c4c4c1;--focus: #1d5fd1;--shadow-raised: 0 1px 2px rgba(0, 0, 0, .08), 0 0 0 1px rgba(0, 0, 0, .04)}html[data-surface].theme-switching *,html[data-surface].theme-switching *:before,html[data-surface].theme-switching *:after{transition:none!important}html[data-surface] body{font-family:var(--font);font-synthesis:none;background:var(--bg);color:var(--fg);line-height:1.5}html[data-surface] ::selection{background:var(--fg);color:var(--bg)}:where(html[data-surface]) :focus-visible{outline:2px solid var(--focus);outline-offset:2px}.theme-toggle{flex:none;width:40px;height:40px;display:inline-grid;place-items:center;border:1px solid var(--line-2);border-radius:999px;background:transparent;color:var(--fg-2);cursor:pointer;transition:color .15s ease,background-color .15s ease,border-color .15s ease}.theme-toggle:hover{color:var(--fg);background:var(--surface)}.theme-toggle svg{display:none}html[data-theme=dark] .theme-toggle .i-sun,html:not([data-theme=dark]) .theme-toggle .i-moon{display:block}html[data-surface] .site-footer{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.75rem 1.5rem;text-align:left;max-width:calc(var(--max-width) - 2 * var(--pad-x));border-top:1px solid var(--line);padding:1.5rem 0;padding-bottom:max(1.75rem,env(safe-area-inset-bottom))}html[data-surface] .footer-links{order:2;justify-content:flex-start;gap:.25rem 1.25rem;margin:0}html[data-surface] .footer-links a{color:var(--fg-2);font-size:var(--fs-sm);text-transform:none;letter-spacing:0}html[data-surface] .footer-links a:hover{color:var(--fg)}html[data-surface] .footer-copy{order:1;color:var(--fg-3);font-size:var(--fs-sm);letter-spacing:0}html[data-surface=portfolio] main{padding:1.5rem var(--pad-x) 4.5rem;padding-left:max(var(--pad-x),env(safe-area-inset-left));padding-right:max(var(--pad-x),env(safe-area-inset-right))}.topbar{max-width:var(--content-max, var(--max-width));margin:0 auto;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;column-gap:1rem;row-gap:.25rem;padding:clamp(1.25rem,3vw,2rem) var(--pad-x) 0;padding-top:max(clamp(1.25rem,3vw,2rem),env(safe-area-inset-top));padding-left:max(var(--pad-x),env(safe-area-inset-left));padding-right:max(var(--pad-x),env(safe-area-inset-right))}.brand-block{justify-self:start;min-width:0}.brand-link{color:var(--fg);transition:color .15s ease}.brand-link:hover{color:var(--fg-2)}.brand{display:block;font-size:var(--fs-title);font-weight:600;font-stretch:78%;letter-spacing:-.015em;line-height:.95}.topbar-home .brand{font-size:clamp(2.1rem,1.4rem + 3vw,3.5rem)}.brand-tagline{display:block;margin-top:.2rem;color:var(--fg-2);font-size:var(--fs-ui)}.topbar-home .brand-tagline{margin-top:.4rem}.topbar .theme-toggle{width:44px;height:44px}.back-link{grid-column:1 / -1;justify-self:start;display:inline-flex;align-items:center;gap:.3rem;min-height:44px;padding-right:.75rem;color:var(--fg-2);font-size:var(--fs-ui);transition:color .15s ease}.back-link svg{margin-left:-6px}.back-link:hover{color:var(--fg)}.welcome{max-width:60ch;margin:-.5rem 0 .75rem;color:var(--fg-2);font-size:var(--fs-ui);line-height:1.35;text-wrap:pretty;white-space:pre-wrap}.home-hero{--lead-h: min(52svh, 600px);margin-bottom:2.5rem}.lead{width:min(100%,calc(var(--lead-h) * var(--aspect, 1.5)));margin-inline:auto}.lead-photo{display:block;aspect-ratio:var(--aspect, 1.5);background:var(--surface);border-radius:var(--radius)}.lead-photo img{display:block;width:100%;height:100%;object-fit:contain;border-radius:var(--radius)}.lead-cap{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:0 1rem;margin-top:.6rem}.lead-title{color:var(--fg);font-size:var(--fs-ui);font-weight:500}.lead-by{color:var(--fg-2);font-size:var(--fs-sm)}.home-galleries{scroll-margin-top:1.5rem}.lead-set+.home-galleries{margin-top:1.5rem;border-top:1px solid var(--line)}.home-galleries-head{display:flex;align-items:center;justify-content:space-between;gap:1rem;min-height:44px}.home-galleries-head h2{color:var(--fg-2);font-size:var(--fs-sm);font-weight:500}.home-galleries-all{display:inline-flex;align-items:center;min-height:44px;color:var(--fg-2);font-size:var(--fs-sm);text-decoration:underline;text-underline-offset:.25em;transition:color .15s ease}.home-galleries-all:hover{color:var(--fg)}.home-galleries-list{list-style:none;display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,22rem),1fr));gap:0 1.5rem}.home-gallery{display:flex;align-items:center;gap:.75rem;min-height:44px;padding-block:.5rem}.home-gallery-thumb{flex:none;width:80px;height:54px;object-fit:cover;background:var(--surface);border-radius:var(--radius)}.home-gallery-text{min-width:0;display:flex;flex-direction:column}.home-gallery-title{color:var(--fg);font-size:var(--fs-ui);font-weight:500;line-height:1.3}.home-gallery:hover .home-gallery-title{text-decoration:underline;text-underline-offset:.2em}.home-gallery-meta,.home-gallery-stats{font-size:var(--fs-sm);line-height:1.4}.home-gallery-meta{color:var(--fg-2)}.home-gallery-stats{color:var(--fg-3)}.filters{display:flex;flex-wrap:wrap;gap:.25rem;margin-bottom:1.25rem}.filters button{display:inline-flex;align-items:baseline;gap:.4em;background:transparent;border:0;border-radius:999px;color:var(--fg-2);font:inherit;font-size:var(--fs-ui);padding:.4rem .85rem;cursor:pointer;transition:color .15s ease,background-color .15s ease}.filters button .count{color:var(--fg-3);font-size:var(--fs-sm);font-variant-numeric:tabular-nums}.filters button:hover{color:var(--fg);background:var(--surface)}.filters button.active{color:var(--bg);background:var(--fg)}.filters button.active .count{color:inherit;opacity:.6}.no-matches{padding:3.5rem 1rem;text-align:center;color:var(--fg-2)}.no-matches p{margin-bottom:.85rem;font-size:var(--fs-body)}.reset-filter-btn{display:inline-flex;align-items:center;font:inherit;font-size:var(--fs-ui);color:var(--fg);background:var(--surface);border:1px solid var(--line);border-radius:999px;padding:.45rem 1.15rem;cursor:pointer;transition:background-color .15s ease,border-color .15s ease}.reset-filter-btn:hover{background:var(--raised);border-color:var(--line-2)}.gallery{--row-h: 200px;display:flex;flex-wrap:wrap;gap:var(--gap)}.photo-card{position:relative;display:block;flex:var(--aspect, 1.5) 1 calc(var(--row-h) * var(--aspect, 1.5));aspect-ratio:var(--aspect, 1.5);max-width:100%;overflow:hidden;background:var(--surface);border-radius:var(--radius)}.photo-card img{width:100%;height:100%;object-fit:cover;display:block}.gallery .photo-card{container-type:inline-size}.gallery-spacer{flex:999999 1 calc(var(--row-h) * 1.5);height:0}.gallery .no-matches{flex-basis:100%}@media(max-width:1024px){.gallery{--row-h: 160px}}.photo-card .caption{position:absolute;inset:0;display:flex;align-items:flex-end;padding:1rem;background:linear-gradient(to top,#0000008c 0 2.5rem,#0000 5rem);opacity:0;transition:opacity .25s ease}.photo-card:hover .caption,.photo-card:focus-visible .caption{opacity:1}.photo-card .caption span{font-size:var(--fs-ui);font-weight:500;color:#fff}.photo-card[data-fav="1"]:after{content:"★";position:absolute;top:.45rem;right:.55rem;z-index:2;color:#fff;font-size:.8rem;text-shadow:0 1px 4px rgba(0,0,0,.55);pointer-events:none}@media(hover:none){.photo-card .caption{opacity:1;padding:.7rem;background:linear-gradient(to top,#0000008c 0 2rem,#0000 4rem)}.photo-card .caption span{font-size:var(--fs-sm)}}@container (width < 160px){.photo-card .caption{padding:.35rem .45rem;background:linear-gradient(to top,#000000a6 0 1.5rem,#0000 3.25rem)}.photo-card .caption span{overflow:hidden;font-size:var(--fs-sm);line-height:1.25;text-overflow:ellipsis;white-space:nowrap}}@container (width < 100px){.photo-card .caption{display:none}}.empty-state{padding:4rem 0;color:var(--fg-2)}.empty-state code{background:var(--surface);padding:.15em .45em;border-radius:var(--radius);font-size:.95em;font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace}.photo-page{display:flex;flex-direction:column;align-items:center}.photo-frame{position:relative;display:flex;justify-content:center;width:100vw;margin-inline:calc(50% - 50vw)}.photo-zoom-link{display:block;cursor:zoom-in;line-height:0}.photo-page img{max-width:100%;max-height:85vh;width:auto;height:auto;object-fit:contain;border-radius:var(--radius)}.nav-arrow{position:absolute;top:50%;transform:translateY(-50%);z-index:5;width:44px;height:44px;display:inline-grid;place-items:center;border:1px solid var(--line-2);border-radius:999px;background:var(--bg);color:var(--fg-2);transition:color .15s ease,background-color .15s ease,border-color .15s ease}.nav-arrow:hover,.nav-arrow:focus-visible{color:var(--fg);background:var(--surface);border-color:var(--fg-3)}.nav-prev{--outside: calc((100% - min(100%, 85vh * var(--photo-aspect, 1.5)))/2 - 1rem - 44px) ;left:max(.5rem,var(--outside))}.nav-next{--outside: calc((100% - min(100%, 85vh * var(--photo-aspect, 1.5)))/2 - 1rem - 44px) ;right:max(.5rem,var(--outside))}@media(max-width:760px){.nav-arrow{width:40px;height:40px;border:0;background:#0006;color:#fff;backdrop-filter:blur(6px)}.nav-arrow:hover,.nav-arrow:focus-visible{background:#000000a6;color:#fff}.nav-prev{--outside: calc((100% - min(100%, 85vh * var(--photo-aspect, 1.5)))/2 - .5rem - 40px) ;left:max(.4rem,var(--outside))}.nav-next{--outside: calc((100% - min(100%, 85vh * var(--photo-aspect, 1.5)))/2 - .5rem - 40px) ;right:max(.4rem,var(--outside))}}.photo-info{width:min(100%,max(24rem,85vh * var(--photo-aspect, 1.5)));margin-top:1.75rem;display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:1.5rem 3rem}.photo-text{flex:1 1 20rem;min-width:0}.photo-text h1{font-size:var(--fs-title);font-weight:600;letter-spacing:-.01em;line-height:1.15}.byline{display:flex;flex-wrap:wrap;gap:.1rem .9rem;margin-top:.35rem;color:var(--fg-2);font-size:var(--fs-ui)}.byline time{color:var(--fg-3)}.photo-text .description{max-width:62ch;margin-top:.9rem;font-size:var(--fs-body);line-height:1.55}.photo-actions{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;margin-top:1.25rem}.cat-chips{display:flex;flex-wrap:wrap;gap:.5rem}.cat-chips a,.share-btn{display:inline-flex;align-items:center;gap:.35rem;min-height:32px;padding:.25rem .8rem;border:1px solid var(--line-2);border-radius:999px;background:transparent;color:var(--fg-2);font:inherit;font-size:var(--fs-sm);cursor:pointer;transition:color .15s ease,border-color .15s ease}.cat-chips a:hover,.share-btn:hover{color:var(--fg);border-color:var(--fg-3)}.exposure{flex:0 1 auto}.exposure-readout{display:flex;flex-wrap:wrap;gap:.75rem 1.75rem}.exposure-readout div{display:flex;flex-direction:column-reverse}.exposure-readout dd{font-size:1.375rem;font-weight:500;font-variant-numeric:tabular-nums;letter-spacing:-.01em;line-height:1.1}.exposure-readout dt{margin-top:.3rem;color:var(--fg-3);font-size:var(--fs-sm)}.gear{display:flex;flex-direction:column;gap:.1rem;margin-top:1rem;color:var(--fg-2);font-size:var(--fs-sm)}@media(max-width:760px){.photo-info{margin-top:1.25rem}.exposure{padding-top:1.25rem;border-top:1px solid var(--line);width:100%}}@media(pointer:coarse){.filters button,.cat-chips a,.share-btn{min-height:40px}}@media(max-width:600px){html[data-surface=portfolio] main{padding-top:1.25rem;padding-bottom:3rem}.gallery{--row-h: 100px}.filters{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;margin-inline:calc(-1 * var(--pad-x));padding-inline:var(--pad-x);scroll-padding-inline:var(--pad-x)}.filters::-webkit-scrollbar{display:none}.filters button{flex:none}.home-hero{--lead-h: min(44svh, 360px);margin-bottom:1.75rem}}
