.photo-app{--type-display:clamp(2.5rem, 6.5vw, 5rem);--type-title:clamp(1.4rem, 3.2vw, 2.4rem);--type-body:1rem;--type-caption:.85rem;--track-display:-.025em;--track-title:-.012em;--track-caption:.01em;--space-1:.5rem;--space-2:1rem;--space-3:1.5rem;--space-4:2.5rem;--space-5:clamp(4rem, 9vw, 7.5rem);--ease-settle:cubic-bezier(.25, 1, .5, 1);--ease-exit:cubic-bezier(.5, 0, .75, 0);--press-scale:.97;--glass-bg:#ffffff8c;--glass-bg-strong:#ffffffb8;--glass-bg-hover:#ffffffbf;--glass-border:#ffffff8c;--glass-highlight:#ffffffd9;--glass-shadow:0 8px 32px #00000026;--glass-shadow-soft:0 4px 16px #0000001f;background:radial-gradient(64rem 46rem at 12% 2%, #f5c87866, transparent 70%), radial-gradient(60rem 44rem at 86% 12%, #f7ae9261, transparent 68%), radial-gradient(60rem 44rem at 20% 24%, #f4a2c261, transparent 70%), radial-gradient(62rem 46rem at 84% 35%, #c8ace65c, transparent 68%), radial-gradient(66rem 48rem at 14% 47%, #a4b2ec5c, transparent 70%), radial-gradient(62rem 46rem at 84% 59%, #9aceee61, transparent 68%), radial-gradient(62rem 46rem at 22% 71%, #98dcd05c, transparent 70%), radial-gradient(58rem 42rem at 82% 83%, #f4a8c457, transparent 68%), radial-gradient(66rem 48rem at 16% 95%, #f5c88061, transparent 70%), radial-gradient(54rem 42rem at 52% 50%, #c4b4e62e, transparent 66%), var(--bg);min-height:100svh;overflow-x:clip}@media (prefers-color-scheme:dark){.photo-app{--glass-bg:#1c1c2080;--glass-bg-strong:#1c1c20ad;--glass-bg-hover:#30303699;--glass-border:#ffffff24;--glass-highlight:#fff3;--glass-shadow:0 8px 32px #0000008c;--glass-shadow-soft:0 4px 16px #00000073;background:radial-gradient(64rem 46rem at 12% 2%, #e2aa4e57, transparent 68%), radial-gradient(60rem 44rem at 86% 12%, #e4866857, transparent 66%), radial-gradient(60rem 44rem at 20% 24%, #e27ea857, transparent 68%), radial-gradient(62rem 46rem at 84% 35%, #a084d857, transparent 66%), radial-gradient(66rem 48rem at 14% 47%, #6484da57, transparent 68%), radial-gradient(62rem 46rem at 84% 59%, #54acd857, transparent 66%), radial-gradient(62rem 46rem at 22% 71%, #5cc2b652, transparent 68%), radial-gradient(58rem 42rem at 82% 83%, #e286a252, transparent 66%), radial-gradient(66rem 48rem at 16% 95%, #e2aa5857, transparent 68%), radial-gradient(54rem 42rem at 52% 50%, #988eca33, transparent 64%), var(--bg)}}.photo-chip,.photo-lightbox__button{background:var(--glass-bg);-webkit-backdrop-filter:blur(18px)saturate(180%);backdrop-filter:blur(18px)saturate(180%);border:1px solid var(--glass-border);box-shadow:var(--glass-shadow-soft), inset 0 1px 0 var(--glass-highlight), inset 0 -1px 0 #0000000f}@supports not ((-webkit-backdrop-filter:blur(1px)) or (backdrop-filter:blur(1px))){.photo-chip,.photo-lightbox__button{background:var(--surface)}}.photo-topbar{z-index:100;pointer-events:none;justify-content:space-between;align-items:flex-start;gap:.75rem;display:flex;position:fixed;top:1rem;left:1rem;right:1rem}.photo-topbar>*,.photo-topbar__right>*{pointer-events:auto}.photo-topbar__right{align-items:center;gap:.5rem;display:flex}.photo-chip__short{display:none}.photo-chip{color:var(--text);transition:background .25s ease, transform .25s var(--ease-settle);border-radius:999px;margin:0;padding:.5rem 1rem;font-size:.9rem;text-decoration:none;display:inline-block}a.photo-chip:hover,button.photo-chip:hover{background:var(--glass-bg-hover);transform:scale(1.04)}.photo-chip:active,.photo-category:active,.photo-masonry__item:active{transform:scale(var(--press-scale));transition-duration:.1s}.photo-chip:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.photo-app:before{content:"";z-index:90;pointer-events:none;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);height:4.5rem;position:fixed;inset:0 0 auto;-webkit-mask-image:linear-gradient(#000 35%,#0000);mask-image:linear-gradient(#000 35%,#0000)}.photo-chip--title{font-family:var(--serif)}.photo-main{max-width:1400px;margin:0 auto;padding:6rem clamp(1rem,4vw,3rem) 2.5rem}.photo-intro{text-align:center;margin-bottom:clamp(2rem,5vw,3.5rem)}.photo-intro__title{letter-spacing:-.02em;font-size:clamp(2.25rem,5vw,3.5rem);line-height:1.1}.photo-intro__role{font-family:var(--sans);letter-spacing:var(--track-caption);color:var(--text-muted);margin-top:.5rem;font-size:clamp(.95rem,1.6vw,1.1rem);font-weight:500;display:block}.visually-hidden{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.photo-section__title{margin:0 0 var(--space-3);font-size:var(--type-title);letter-spacing:var(--track-title);line-height:1.15}.photo-section__title--small{font-size:clamp(1.25rem,2.2vw,1.5rem)}.photo-summary{max-width:40rem;margin:var(--space-5) auto 0;text-align:center}.photo-summary p{font-family:var(--serif);letter-spacing:-.005em;margin:0;font-size:clamp(1.15rem,2vw,1.4rem);line-height:1.55}.photo-commissions{margin-top:var(--space-5);grid-template-columns:minmax(0,5fr) minmax(0,6fr);align-items:center;gap:clamp(1.5rem,5vw,4.5rem);display:grid}.photo-commissions__img{aspect-ratio:4/5;object-fit:cover;width:100%;box-shadow:var(--glass-shadow-soft);border-radius:16px}.photo-commissions__text{max-width:34rem}.photo-commissions__text p{margin:0}.photo-commissions__kinds{margin:var(--space-3) 0;font-family:var(--serif);flex-wrap:wrap;gap:0 1.25rem;padding:0;font-size:1.15rem;list-style:none;display:flex}.photo-commissions__kinds li+li:before{content:"·";color:var(--text-muted);margin-right:1.25rem}.photo-commissions__contact{color:var(--text-muted)}.photo-commissions__contact a{white-space:nowrap;margin-top:.25rem;display:inline-block}.photo-commissions__contact a,.photo-follow__aside a,.photo-footer a{color:var(--text);text-decoration:underline;-webkit-text-decoration-color:color-mix(in srgb, var(--text) 30%, transparent);text-decoration-color:color-mix(in srgb, var(--text) 30%, transparent);text-underline-offset:.2em;transition:text-decoration-color .2s}.photo-commissions__contact a:hover,.photo-follow__aside a:hover,.photo-footer a:hover{text-decoration-color:currentColor}@media (width<=760px){.photo-commissions{grid-template-columns:1fr}.photo-commissions__img{aspect-ratio:4/3}}.photo-faq{max-width:44rem;margin:var(--space-5) auto 0}.photo-faq dl{margin:0}.photo-faq__item{padding:var(--space-2) 0;border-top:1px solid var(--border)}.photo-faq dt{font-weight:600}.photo-faq dd{color:var(--text-muted);margin:.25rem 0 0}.photo-footer{justify-content:space-between;align-items:center;gap:var(--space-1) var(--space-3);margin-top:var(--space-5);padding-top:var(--space-3);border-top:1px solid var(--border);color:var(--text-muted);font-size:var(--type-caption);letter-spacing:var(--track-caption);flex-wrap:wrap;display:flex}.photo-footer__line{margin:0}.photo-footer__links{gap:var(--space-3);display:flex}.photo-footer__links a{align-items:center;min-height:44px;display:inline-flex}.photo-intro__tagline{color:var(--text-muted);margin:.75rem 0 0;font-size:clamp(.95rem,1.5vw,1.1rem)}.photo-masonry{align-items:flex-start;gap:1rem;display:flex}.photo-masonry__col{flex-direction:column;flex:1;gap:1rem;min-width:0;display:flex}@media (width<=600px){.photo-masonry,.photo-masonry__col{gap:.6rem}}.photo-masonry__item{cursor:pointer;width:100%;box-shadow:var(--glass-shadow-soft);transition:transform .3s var(--ease-settle);background:0 0;border:none;border-radius:12px;margin:0;padding:0;display:block;overflow:hidden}.photo-masonry__item:hover{transform:scale(1.02)}.photo-masonry__item:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.photo-masonry__item img{width:100%;height:auto;display:block}.photo-follow{text-align:center;margin-top:clamp(1.5rem,4vw,2.5rem)}.photo-follow__chip{max-width:100%;display:inline-block}.photo-follow__aside{margin:var(--space-2) 0 0;color:var(--text-muted);font-size:.95rem}.photo-categories{grid-template-columns:repeat(3,1fr);gap:clamp(.75rem,2vw,1.25rem);display:grid}@media (width<=900px){.photo-categories{grid-template-columns:repeat(2,1fr)}}.photo-category{aspect-ratio:4/3;box-shadow:var(--glass-shadow-soft);transition:transform .3s var(--ease-settle);border-radius:16px;text-decoration:none;display:block;position:relative;overflow:hidden}.photo-category:hover{transform:translateY(-3px)}.photo-category:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.photo-category__img{object-fit:cover;width:100%;height:100%;transition:transform .5s var(--ease-settle)}.photo-category:hover .photo-category__img{transform:scale(1.05)}.photo-category__label{color:#fff;font-family:var(--serif);background:linear-gradient(#0000,#0000008c);justify-content:space-between;align-items:center;gap:.5rem;padding:2.5rem 1rem .9rem;font-size:clamp(1.05rem,2vw,1.35rem);display:flex;position:absolute;inset:auto 0 0}.photo-category__count{font-family:var(--sans);opacity:.85;background:#ffffff38;border-radius:999px;padding:.1rem .55rem;font-size:.75rem}.photo-backchip{cursor:pointer;margin-bottom:1.25rem}.photo-about-button{cursor:pointer}.photo-about-backdrop{z-index:900;position:fixed;inset:0}.photo-about{z-index:950;background:var(--glass-bg-strong);-webkit-backdrop-filter:blur(18px)saturate(180%);backdrop-filter:blur(18px)saturate(180%);border:1px solid var(--glass-border);width:min(360px,100vw - 2rem);max-height:calc(100vh - 5.5rem);box-shadow:var(--glass-shadow), inset 0 1px 0 var(--glass-highlight), inset 0 -1px 0 #0000000f;animation:photo-materialize .38s var(--ease-settle) both;transform-origin:100% 0;border-radius:24px;padding:1.5rem;position:fixed;top:4.25rem;right:1rem;overflow-y:auto}.photo-about.is-leaving{animation:photo-materialize .22s var(--ease-exit) reverse both;pointer-events:none}@keyframes photo-materialize{0%{opacity:0;filter:blur(8px);transform:scale(.9)translateY(-8px)}to{opacity:1;filter:blur();transform:scale(1)translate(0,0)}}.photo-about__header{justify-content:space-between;align-items:baseline;gap:1rem;display:flex}.photo-about__title{font-size:1.5rem}.photo-about__close{color:var(--text-muted);cursor:pointer;background:0 0;border:none;padding:.25rem;font-size:1.2rem;line-height:1}.photo-about__portrait{object-fit:cover;border:1px solid var(--glass-border);width:96px;height:96px;box-shadow:var(--glass-shadow-soft);border-radius:50%;margin-top:1rem;display:block}.photo-about__name{color:var(--text-muted);margin:.4rem 0 0;font-size:.9rem}.photo-about__bio{white-space:pre-line;margin:.9rem 0 0;font-size:.95rem}.photo-about__links{border-top:1px solid var(--glass-border);flex-wrap:wrap;gap:.5rem;margin-top:1.25rem;padding-top:1.15rem;display:flex}.photo-about__link{cursor:pointer}a.photo-about__link:hover{background:var(--glass-bg-hover);transform:scale(1.04)}.photo-lightbox{z-index:1000;-webkit-backdrop-filter:blur(24px)saturate(140%);backdrop-filter:blur(24px)saturate(140%);background:#00000073;justify-content:center;align-items:center;animation:.25s photo-fade-in;display:flex;position:fixed;inset:0}@supports not ((-webkit-backdrop-filter:blur(1px)) or (backdrop-filter:blur(1px))){.photo-lightbox{background:#000000d9}}@keyframes photo-fade-in{0%{opacity:0}to{opacity:1}}.photo-lightbox__image{object-fit:contain;max-width:90vw;max-height:85vh;box-shadow:var(--glass-shadow);touch-action:pan-y pinch-zoom;cursor:grab;-webkit-user-select:none;user-select:none;will-change:transform;border-radius:12px}.photo-lightbox__image:active{cursor:grabbing}.photo-lightbox__button{width:44px;height:44px;color:var(--text);cursor:pointer;transition:background .25s ease, transform .25s var(--ease-settle);border-radius:50%;justify-content:center;align-items:center;font-size:1.5rem;line-height:1;display:flex;position:absolute}.photo-lightbox__button:hover{background:var(--glass-bg-hover);transform:scale(1.06)}.photo-lightbox__button:focus-visible{outline:2px solid var(--glass-highlight);outline-offset:2px}.photo-lightbox__counter{color:#fff;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#0006;border-radius:999px;padding:.3rem .8rem;font-size:.85rem;position:absolute;top:1.4rem;left:1.4rem}.photo-lightbox__close{top:1rem;right:1rem}.photo-lightbox__prev{top:50%;left:1rem;transform:translateY(-50%)}.photo-lightbox__next{top:50%;right:1rem;transform:translateY(-50%)}.photo-lightbox__prev:hover,.photo-lightbox__next:hover{transform:translateY(-50%)scale(1.06)}@media (width<=640px){.photo-chip--back .photo-chip__label,.photo-chip--instagram .photo-chip__long{display:none}.photo-chip--instagram .photo-chip__short{display:inline}.photo-main{padding-top:5rem}.photo-chip{justify-content:center;align-items:center;min-width:44px;min-height:44px;display:inline-flex}.photo-follow__chip{min-height:0;display:inline-block}.photo-footer{flex-direction:column;align-items:flex-start}.photo-category__label{padding:2rem .6rem .65rem;font-size:.85rem}.photo-category__count{display:none}}@media (prefers-reduced-motion:reduce){.photo-category,.photo-category__img,.photo-masonry__item,.photo-chip,.photo-lightbox,.photo-lightbox__button{transition:none;animation:none}.photo-about,.photo-about.is-leaving{animation-name:photo-fade-in;animation-duration:.2s}.photo-chip:active,.photo-category:active,.photo-masonry__item:active{transform:none}}@media (prefers-reduced-transparency:reduce){.photo-chip,.photo-lightbox__button,.photo-about{background:var(--surface);-webkit-backdrop-filter:none;backdrop-filter:none}.photo-app:before{display:none}.photo-lightbox{-webkit-backdrop-filter:none;backdrop-filter:none;background:#000000e6}}@media (prefers-contrast:more){.photo-chip,.photo-lightbox__button,.photo-about{background:var(--surface);border-color:var(--text)}.photo-app{--text-muted:var(--text)}}
