*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}:root{--bg: #1c1917;--bg-elevated: #242120;--text: #d4d4d0;--text-muted: #807a74;--text-dim: #3d3835;--accent: #a09890;--border: #2e2a27;--font-wordmark: "Inter", -apple-system, sans-serif;--font-heading: "EB Garamond", serif;--font-body: "Inter", -apple-system, sans-serif;--header-height: 56px;--max-width: 1400px;--gutter: clamp(20px, 5vw, 64px);--ease-out: cubic-bezier(.16, 1, .3, 1);--ease-in-out: cubic-bezier(.65, 0, .35, 1)}html{background:var(--bg);color:var(--text);font-family:var(--font-body);font-weight:300;font-size:16px;line-height:1.6;-webkit-font-smoothing:antialiased}body{min-height:100vh;overflow-x:hidden}img{display:block;max-width:100%;height:auto}a{color:var(--text);text-decoration:none}button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit}.app:before{content:"";position:fixed;top:-50%;right:-50%;bottom:-50%;left:-50%;width:200%;height:200%;pointer-events:none;z-index:9999;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.75' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");background-size:512px 512px;opacity:.03;mix-blend-mode:overlay}@keyframes grain{0%,to{transform:translate(0)}10%{transform:translate(-5%,-10%)}20%{transform:translate(-15%,5%)}30%{transform:translate(7%,-20%)}40%{transform:translate(-5%,20%)}50%{transform:translate(-15%,10%)}60%{transform:translate(15%)}70%{transform:translateY(15%)}80%{transform:translate(3%,20%)}90%{transform:translate(-10%,10%)}}@keyframes grain-breathe{0%,to{opacity:.02}50%{opacity:.035}}.reveal{opacity:0;transform:translateY(40px);transition:opacity 1.2s var(--ease-out),transform 1.2s var(--ease-out)}.reveal.revealed{opacity:1;transform:translateY(0)}.reveal-once{opacity:0;transform:translateY(24px);transition:opacity .9s var(--ease-out),transform .9s var(--ease-out)}.reveal-once.revealed{opacity:1;transform:translateY(0)}.custom-cursor-area{cursor:none}.custom-cursor{position:fixed;width:24px;height:24px;border:2px solid rgba(255,255,255,.7);border-radius:50%;pointer-events:none;z-index:9998;transform:translate(-50%,-50%);transition:opacity .3s ease;opacity:0}.custom-cursor--visible{opacity:1}@media(pointer:coarse){.custom-cursor{display:none}.custom-cursor-area{cursor:pointer}}.app{display:flex;flex-direction:column;min-height:100vh}.header{position:fixed;top:0;left:0;right:0;z-index:100;display:flex;align-items:center;justify-content:space-between;height:var(--header-height);padding:0 var(--gutter);transition:opacity .5s var(--ease-out),transform .5s var(--ease-out),background .5s var(--ease-out)}.header--default{background:transparent;opacity:1;transform:translateY(0)}.header--home{background:transparent;backdrop-filter:none;-webkit-backdrop-filter:none;opacity:1;transform:translateY(0);pointer-events:auto}.header__wordmark{font-family:var(--font-wordmark);font-size:1.2rem;font-weight:400;letter-spacing:.03em;color:var(--text);transition:color .6s var(--ease-out)}.header__wordmark:hover{color:var(--text)}.header__nav{display:flex;gap:32px}.header__link{font-size:.8rem;font-weight:400;letter-spacing:.1em;text-transform:lowercase;color:var(--text-muted);transition:color .6s var(--ease-out)}.header__link:hover,.header__link--active{color:var(--text)}.footer{padding:64px var(--gutter);text-align:center;font-size:.7rem;letter-spacing:.08em;color:var(--text-dim);display:flex;flex-direction:column;align-items:center;gap:.6rem}.footer__sibling{font-family:var(--font-heading);font-style:italic;font-size:.7rem;color:var(--text-dim);text-decoration:none;letter-spacing:.04em;transition:color .3s ease}.footer__sibling:hover{color:var(--text-muted)}.app:has(.pensieve){height:100vh;height:100dvh;overflow:hidden;position:fixed;top:0;right:0;bottom:0;left:0;touch-action:none}body:has(.pensieve){overflow:hidden;position:fixed;top:0;right:0;bottom:0;left:0;width:100%}.pensieve{position:relative;height:100vh;height:100dvh;width:100%;overflow:hidden;background:var(--bg);display:flex;flex-direction:column;align-items:center}.pensieve__subtitle{position:absolute;top:8vh;font-family:var(--font-heading);font-size:clamp(.8rem,1.4vw,1.1rem);font-style:italic;color:#ffffff4d;letter-spacing:.06em;z-index:5;opacity:0;animation:pensieve-title-in 2s var(--ease-out) 1.2s forwards}@keyframes pensieve-title-in{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.pensieve__glow{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:70%;height:60%;background:radial-gradient(ellipse at center,rgba(140,165,200,.07) 0%,rgba(130,155,190,.035) 35%,rgba(120,145,180,.015) 55%,transparent 75%);pointer-events:none;z-index:0;animation:glow-pulse 8s ease-in-out infinite}@keyframes glow-pulse{0%,to{opacity:1}50%{opacity:.7}}.pensieve__caustics{position:absolute;top:20%;left:15%;width:70%;height:60%;pointer-events:none;z-index:0;opacity:0;animation:caustics-in 3s ease-out 1.5s forwards}@keyframes caustics-in{to{opacity:1}}.pensieve__caustics,.pensieve__caustics:before,.pensieve__caustics:after{border-radius:50%}.pensieve__caustics{background:radial-gradient(ellipse 40% 35% at 30% 45%,rgba(140,175,220,.07) 0%,transparent 70%);animation:caustic-drift-1 14s ease-in-out infinite alternate,caustics-in 3s ease-out 1.5s forwards}.pensieve__caustics:before,.pensieve__caustics:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;will-change:transform}.pensieve__caustics:before{background:radial-gradient(ellipse 35% 45% at 65% 50%,rgba(120,160,210,.06) 0%,transparent 70%);animation:caustic-drift-2 18s ease-in-out infinite alternate}.pensieve__caustics:after{background:radial-gradient(ellipse 50% 30% at 50% 60%,rgba(155,185,225,.05) 0%,transparent 70%);animation:caustic-drift-3 22s ease-in-out infinite alternate}@keyframes caustic-drift-1{0%{transform:translate(0) scale(1)}to{transform:translate(30px,-20px) scale(1.1)}}@keyframes caustic-drift-2{0%{transform:translate(0) scale(1)}to{transform:translate(-25px,15px) scale(.95)}}@keyframes caustic-drift-3{0%{transform:translate(0) scale(1)}to{transform:translate(15px,25px) scale(1.05)}}.pensieve__ripples{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:50vw;height:40vh;pointer-events:none;z-index:0}.pensieve__ripple{position:absolute;top:0;right:0;bottom:0;left:0;border:1px solid rgba(140,170,210,.06);border-radius:50%;animation:ripple-expand 8s ease-out infinite}.pensieve__ripple:nth-child(2){animation-delay:-2.7s}.pensieve__ripple:nth-child(3){animation-delay:-5.3s}@keyframes ripple-expand{0%{transform:scale(.5);opacity:1}to{transform:scale(1.5);opacity:0}}.pensieve:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:1;background:radial-gradient(ellipse 55% 50% at 50% 50%,transparent 0%,transparent 40%,rgba(10,12,18,.3) 75%,rgba(10,12,18,.6) 100%)}.pensieve__pool{position:absolute;top:20%;left:10%;width:80%;height:60%;z-index:2}.pensieve__trail{position:fixed;width:400px;height:400px;border-radius:50%;background:radial-gradient(circle at center,rgba(140,170,210,.05) 0%,transparent 70%);pointer-events:none;transform:translate(-50%,-50%);z-index:1;opacity:0;transition:opacity .4s ease-out}@media(pointer:coarse){.pensieve__trail{display:none}}.pensieve__depth-layer{position:absolute;top:0;right:0;bottom:0;left:0;transition:transform .15s ease-out;pointer-events:none}.pensieve__depth-layer .pensieve__wisp{pointer-events:auto}.pensieve__depth-layer--0{z-index:1}.pensieve__depth-layer--1{z-index:2}.pensieve__depth-layer--2{z-index:3}.pensieve__depth-layer--0 .pensieve__wisp-img{width:clamp(100px,11vw,150px)}.pensieve__depth-layer--1 .pensieve__wisp-img{width:clamp(110px,12vw,165px)}@media(max-width:420px){.pensieve__depth-layer--0 .pensieve__wisp-img{width:clamp(70px,11vw,120px)}.pensieve__depth-layer--1 .pensieve__wisp-img{width:clamp(80px,12vw,130px)}}.pensieve__wisp{position:absolute;transform:translate(-50%,-50%) rotate(var(--rot, 0deg));animation-timing-function:ease-in-out;animation-iteration-count:infinite;z-index:1;cursor:pointer;padding:0;border:none;background:none;outline:none;font-family:inherit;transition:opacity 1.2s var(--ease-in-out)}.pensieve__wisp--fading{opacity:0!important}.pensieve__wisp--active{animation-play-state:paused;z-index:10}.pensieve__wisp-img{width:clamp(120px,13vw,180px);height:auto;display:block;border-radius:2px;opacity:.6;filter:saturate(.7) brightness(.85);transition:opacity .4s var(--ease-out),filter .4s var(--ease-out),transform .4s var(--ease-out),box-shadow .4s var(--ease-out);box-shadow:0 2px 20px #0006;animation:pensieve-surface 1.2s var(--ease-out) var(--entrance-delay, .5s) both}@keyframes pensieve-surface{0%{opacity:0;transform:scale(.85) translateY(20px)}to{opacity:.6;transform:none}}.pensieve__wisp--active .pensieve__wisp-img{opacity:1;filter:saturate(1) brightness(1);transform:scale(1.15);box-shadow:0 8px 40px #00000080,0 0 30px #8caad21a;will-change:transform,opacity}.pensieve__wisp--dimmed .pensieve__wisp-img{opacity:.3;filter:saturate(.5) brightness(.6)}.pensieve__wisp--focal .pensieve__wisp-img{opacity:.8;filter:saturate(.85) brightness(.95);transform:scale(1.08);box-shadow:0 4px 30px #0006,0 0 20px #8caad20f}.pensieve__wisp--focal.pensieve__wisp--active .pensieve__wisp-img{opacity:1;filter:saturate(1) brightness(1);transform:scale(1.15)}.pensieve__wisp--focal.pensieve__wisp--dimmed .pensieve__wisp-img{opacity:.3;filter:saturate(.5) brightness(.6);transform:scale(1.08)}.pensieve__wisp-label{display:block;margin-top:8px;font-family:var(--font-heading);font-style:italic;font-size:.75rem;color:var(--text-muted);letter-spacing:.03em;opacity:0;transform:translateY(-4px);transition:opacity .3s var(--ease-out),transform .3s var(--ease-out);pointer-events:none;white-space:nowrap}.pensieve__wisp--active .pensieve__wisp-label{opacity:1;transform:translateY(0)}.pensieve__pool--hidden{opacity:0;pointer-events:none;transition:opacity .6s var(--ease-out)}.pensieve__focused-view{position:absolute;top:0;right:0;bottom:0;left:0;z-index:20;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1.5rem;animation:pensieve-focus-in .5s var(--ease-out) both}@keyframes pensieve-focus-in{0%{opacity:0;transform:scale(.92)}to{opacity:1;transform:scale(1)}}.pensieve__focused-photo{display:flex;flex-direction:column;align-items:center;max-width:80vw}.pensieve__focused-img{max-height:58vh;max-width:80vw;width:auto;height:auto;object-fit:contain;border-radius:2px;box-shadow:0 8px 60px #0009}.pensieve__focused-meta{margin-top:.75rem;font-family:var(--font-heading);font-style:italic;font-size:.85rem;color:var(--text-muted);letter-spacing:.05em;display:flex;gap:.5em}.pensieve__focused-sep{opacity:.4}.pensieve__neighbors{display:flex;gap:.75rem;justify-content:center;max-width:80vw}.pensieve__neighbor{padding:0;border:none;background:none;cursor:pointer;outline:none;opacity:0;animation:neighbor-appear .4s var(--ease-out) forwards;animation-delay:var(--delay, 0s);transition:transform .25s var(--ease-out),opacity .25s var(--ease-out)}.pensieve__neighbor:hover{transform:scale(1.08)}@keyframes neighbor-appear{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.pensieve__neighbor-img{width:clamp(60px,10vw,100px);height:auto;display:block;border-radius:2px;box-shadow:0 2px 16px #0006;opacity:.7;filter:saturate(.7) brightness(.85);transition:opacity .3s var(--ease-out),filter .3s var(--ease-out)}.pensieve__neighbor:hover .pensieve__neighbor-img{opacity:1;filter:saturate(1) brightness(1)}.pensieve--focused .pensieve__archive{opacity:0!important;pointer-events:none;animation:none}.pensieve__archive{position:absolute;bottom:max(5vh,env(safe-area-inset-bottom) + 16px);font-family:var(--font-heading);font-style:italic;font-size:1.05rem;color:var(--text-muted);letter-spacing:.06em;z-index:5;border-bottom:1px solid var(--text-dim);padding-bottom:2px;transition:color .5s var(--ease-out),border-color .5s var(--ease-out);opacity:0;animation:pensieve-title-in 2s var(--ease-out) 3.5s forwards,archive-breathe 4s ease-in-out 5.5s infinite}@keyframes archive-breathe{0%,to{opacity:1}50%{opacity:.5}}.pensieve__archive:hover{color:var(--text);border-bottom-color:var(--text-muted);animation:pensieve-title-in 2s var(--ease-out) 3.5s forwards}.pensieve--plunging{pointer-events:none}.plunge{transform-origin:center 40%;will-change:transform,filter,opacity}.plunge--dive-out{animation:dive-out .9s cubic-bezier(.32,0,.67,0) forwards;pointer-events:none}.plunge--dive-in{animation:dive-in .8s cubic-bezier(.16,1,.3,1) forwards}@keyframes dive-out{0%{transform:scale(1) translateY(0);filter:blur(0px) brightness(1);opacity:1}60%{opacity:1}to{transform:scale(1.5) translateY(-8%);filter:blur(12px) brightness(.3);opacity:0}}@keyframes dive-in{0%{transform:scale(.92) translateY(30px);filter:blur(6px) brightness(.5);opacity:0}40%{opacity:1}to{transform:scale(1) translateY(0);filter:blur(0px) brightness(1);opacity:1}}.plunge--surface-out{animation:surface-out .9s cubic-bezier(.32,0,.67,0) forwards;pointer-events:none}.plunge--surface-in{animation:surface-in .8s cubic-bezier(.16,1,.3,1) forwards}@keyframes surface-out{0%{transform:scale(1) translateY(0);filter:blur(0px) brightness(1);opacity:1}60%{opacity:1}to{transform:scale(.85) translateY(5%);filter:blur(10px) brightness(.3);opacity:0}}@keyframes surface-in{0%{transform:scale(1.15) translateY(-20px);filter:blur(6px) brightness(.5);opacity:0}40%{opacity:1}to{transform:scale(1) translateY(0);filter:blur(0px) brightness(1);opacity:1}}@keyframes pensieve-drift-a{0%,to{transform:translate(-50%,-50%) rotate(var(--rot, 0deg)) translate(0)}20%{transform:translate(-50%,-50%) rotate(var(--rot, 0deg)) translate(8px,-6px) rotate(1deg)}50%{transform:translate(-50%,-50%) rotate(var(--rot, 0deg)) translate(-5px,8px) rotate(-1deg)}80%{transform:translate(-50%,-50%) rotate(var(--rot, 0deg)) translate(6px,3px) rotate(1.5deg)}}@keyframes pensieve-drift-b{0%,to{transform:translate(-50%,-50%) rotate(var(--rot, 0deg)) translate(0)}25%{transform:translate(-50%,-50%) rotate(var(--rot, 0deg)) translate(-7px,-4px) rotate(-1.5deg)}55%{transform:translate(-50%,-50%) rotate(var(--rot, 0deg)) translate(6px,9px) rotate(1deg)}80%{transform:translate(-50%,-50%) rotate(var(--rot, 0deg)) translate(-3px,-7px) rotate(-1deg)}}@keyframes pensieve-drift-c{0%,to{transform:translate(-50%,-50%) rotate(var(--rot, 0deg)) translate(0)}30%{transform:translate(-50%,-50%) rotate(var(--rot, 0deg)) translate(7px,7px) rotate(1deg)}60%{transform:translate(-50%,-50%) rotate(var(--rot, 0deg)) translate(-8px,-3px) rotate(-1.5deg)}85%{transform:translate(-50%,-50%) rotate(var(--rot, 0deg)) translate(4px,-6px) rotate(.8deg)}}@media(pointer:coarse){.pensieve__wisp--active .pensieve__wisp-img{opacity:.6;filter:saturate(.7) brightness(.85);transform:none;box-shadow:0 2px 20px #0006}.pensieve__wisp--active .pensieve__wisp-label{opacity:0}.pensieve__wisp--active{animation-play-state:running}.pensieve__wisp--tapped .pensieve__wisp-img{opacity:.75;filter:saturate(.8) brightness(.9);transform:none;box-shadow:0 2px 20px #0006}.pensieve__wisp--tapped .pensieve__wisp-label{opacity:1;transform:translateY(0)}.pensieve__wisp--tapped{animation-play-state:paused;z-index:10}.pensieve__wisp--dimmed .pensieve__wisp-img{opacity:.45;filter:saturate(.6) brightness(.75);transform:none;box-shadow:0 2px 20px #0006}.pensieve__wisp--focal .pensieve__wisp-img{opacity:.7;filter:saturate(.8) brightness(.9);transform:none}}@media(max-width:768px){.pensieve__pool{top:22%;left:5%;width:90%;height:55%}.pensieve__wisp-img{width:clamp(80px,22vw,110px)}.pensieve__depth-layer--0 .pensieve__wisp-img{width:clamp(70px,19vw,95px)}.pensieve__depth-layer--1 .pensieve__wisp-img{width:clamp(75px,20vw,100px)}.pensieve__wisp-label{font-size:.65rem}}.gallery{flex:1;max-width:var(--max-width);margin:0 auto;padding:var(--header-height) var(--gutter) 0;width:100%;position:relative}.gallery__header{display:flex;align-items:center;justify-content:flex-end;padding:16px 0 8px}.gallery__filter-btn{position:relative;font-size:.75rem;letter-spacing:.08em;color:var(--text-dim);padding:6px 14px;border:1px solid var(--border);border-radius:20px;transition:color .4s var(--ease-out),border-color .4s var(--ease-out);line-height:1}.gallery__filter-btn:hover{color:var(--text-muted)}.gallery__filter-btn--active:after{content:"";position:absolute;top:2px;right:0;width:5px;height:5px;border-radius:50%;background:var(--accent)}.filter-drawer-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:200;background:#000000d9;opacity:0;pointer-events:none;transition:opacity .4s var(--ease-out)}.filter-drawer-overlay--open{opacity:1;pointer-events:auto}.filter-drawer{position:fixed;top:0;right:0;bottom:0;z-index:201;width:320px;max-width:85vw;background:var(--bg-elevated);border-left:1px solid var(--border);padding:32px 24px;padding-right:max(24px,env(safe-area-inset-right));padding-bottom:max(32px,env(safe-area-inset-bottom));transform:translate(100%);transition:transform .4s var(--ease-out);overflow-y:auto;-webkit-overflow-scrolling:touch}.filter-drawer--open{transform:translate(0)}.filter-drawer__header{display:flex;align-items:center;justify-content:space-between;margin-bottom:32px}.filter-drawer__title{font-size:.8rem;font-weight:400;letter-spacing:.1em;text-transform:lowercase;color:var(--text-muted)}.filter-drawer__close{font-size:1.2rem;color:var(--text-dim);padding:8px;min-width:40px;min-height:40px;display:flex;align-items:center;justify-content:center;transition:color .4s var(--ease-out)}.filter-drawer__close:hover{color:var(--text-muted)}.filter-group{margin-bottom:28px}.filter-group__label{display:block;font-size:.65rem;text-transform:uppercase;letter-spacing:.14em;color:var(--text-dim);margin-bottom:12px}.filter-group__pills{display:flex;flex-wrap:wrap;gap:6px}.pill{font-size:.72rem;padding:6px 14px;border-radius:20px;border:1px solid var(--border);color:var(--text-dim);background:transparent;transition:all .4s var(--ease-out);white-space:nowrap;min-height:32px}.pill:hover{border-color:var(--text-dim);color:var(--text-muted)}.pill--active{background:var(--text-muted);color:var(--bg);border-color:var(--text-muted)}.pill--active:hover{background:var(--accent);border-color:var(--accent);color:var(--bg)}.filter-drawer__clear{font-size:.7rem;color:var(--text-dim);letter-spacing:.04em;border-bottom:1px solid var(--text-dim);padding-bottom:1px;margin-top:8px;transition:color .4s,border-color .4s}.filter-drawer__clear:hover{color:var(--text-muted);border-color:var(--text-muted)}.photo-stream{position:relative;padding:24px 0 120px}.photo-stream:before{content:"";position:absolute;top:0;left:0;right:0;height:40px;background:linear-gradient(to bottom,var(--bg),transparent);pointer-events:none;z-index:1}.photo-stream__masonry{columns:3;column-gap:20px}@media(max-width:1024px){.photo-stream__masonry{columns:2}}@media(max-width:600px){.photo-stream__masonry{columns:1}}.photo-card{break-inside:avoid;margin-bottom:20px;position:relative;overflow:hidden;transition:transform .5s var(--ease-out),box-shadow .5s var(--ease-out)}.photo-card:hover{transform:translateY(-2px);box-shadow:0 4px 24px #0000004d}.photo-card__frame{overflow:hidden;position:relative}.photo-card__img{width:100%;height:auto;display:block;filter:saturate(.85) brightness(.92);transition:transform .8s var(--ease-out),filter .5s var(--ease-out)}.photo-card:hover .photo-card__img{transform:scale(1.025);filter:saturate(1) brightness(1)}.photo-card__spotlight{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;opacity:0;transition:opacity .3s ease;background:radial-gradient(circle 200px at var(--mouse-x, 50%) var(--mouse-y, 50%),rgba(255,255,255,.06) 0%,transparent 100%)}.photo-card:hover .photo-card__spotlight{opacity:1}.photo-card__meta{position:absolute;bottom:0;left:0;right:0;padding:24px 12px 10px;background:linear-gradient(to top,rgba(0,0,0,.6),transparent);opacity:0;transition:opacity .5s var(--ease-out)}.photo-card:hover .photo-card__meta{opacity:1}.photo-card__location{font-family:var(--font-heading);font-style:italic;font-size:.75rem;color:#ffffffb3;letter-spacing:.02em}.photo-card__film{display:block;font-size:.65rem;color:#fff6;margin-top:2px}@media(pointer:coarse){.photo-card__meta{opacity:1}.photo-card__spotlight{display:none}}.lightbox{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;width:100vw;height:100vh;height:100dvh;max-width:100vw;max-height:100vh;border:none;padding:0;background:#0000;color:var(--text);animation:lightbox-in .5s var(--ease-out) forwards}@keyframes lightbox-in{0%{background:#0000}to{background:#000000f5}}.lightbox::backdrop{background:transparent}.lightbox__content{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;height:100%;padding:20px;opacity:0;transform:scale(.97);animation:lightbox-content-in .5s var(--ease-out) .1s forwards}@keyframes lightbox-content-in{to{opacity:1;transform:scale(1)}}.lightbox__close{position:absolute;top:max(20px,env(safe-area-inset-top));right:max(24px,env(safe-area-inset-right));font-size:1.5rem;color:var(--text-dim);z-index:10;line-height:1;transition:color .4s var(--ease-out);cursor:pointer;padding:8px;min-width:44px;min-height:44px;display:flex;align-items:center;justify-content:center}.lightbox__close:hover{color:var(--text-muted)}.lightbox__nav{display:flex;align-items:center;gap:20px;flex:1;min-height:0;width:100%;justify-content:center}.lightbox__arrow{font-size:2.5rem;color:var(--text-dim);padding:20px;transition:color .4s var(--ease-out);flex-shrink:0;cursor:pointer}.lightbox__arrow:hover:not(:disabled){color:var(--text-muted)}.lightbox__arrow:disabled{opacity:.1;cursor:default}.lightbox__img{max-width:calc(100% - 120px);max-height:calc(100vh - 140px);object-fit:contain}.lightbox__meta{display:flex;align-items:center;gap:10px;padding:20px 0;font-size:.8rem;color:var(--text-dim);flex-shrink:0;letter-spacing:.03em}.lightbox__location{font-family:var(--font-heading);font-style:italic;color:var(--text-muted)}.lightbox__sep{color:var(--text-dim);opacity:.4}.lightbox__film,.lightbox__date{font-size:.75rem}.lightbox__counter{margin-left:20px;font-size:.7rem;opacity:.4}.lightbox--from-pull{animation:lightbox-pull-in .6s var(--ease-out) forwards}.lightbox--from-pull .lightbox__content{animation:lightbox-pull-content-in .6s var(--ease-out) forwards}@keyframes lightbox-pull-in{0%{background:#0009}to{background:#000000f5}}@keyframes lightbox-pull-content-in{0%{opacity:1;transform:scale(1.15)}to{opacity:1;transform:scale(1)}}@media(max-width:768px){.lightbox__arrow{font-size:2rem;padding:14px;min-width:44px;min-height:44px}.lightbox__img{max-width:calc(100% - 60px);max-height:calc(100vh - 120px)}.lightbox__meta{font-size:.85rem;padding-bottom:max(20px,env(safe-area-inset-bottom))}}@media(max-width:480px){.lightbox__arrow{font-size:1.8rem;padding:12px}.lightbox__img{max-width:calc(100% - 40px);max-height:calc(100vh - 100px)}.pill{font-size:.75rem;padding:8px 16px;min-height:44px}}.about{flex:1;display:flex;justify-content:center;padding:calc(var(--header-height) + 60px) var(--gutter) 100px}.about__content{max-width:480px}.about__title{font-family:var(--font-heading);font-size:1.6rem;font-weight:400;font-style:italic;color:var(--text-muted);margin-bottom:40px;letter-spacing:.04em}.about__text{font-size:.9rem;color:var(--text-muted);margin-bottom:24px;line-height:1.9;letter-spacing:.01em}.about__links{margin-top:48px}.about__link{font-size:.8rem;color:var(--text-muted);letter-spacing:.04em;border-bottom:1px solid var(--border);padding-bottom:3px;transition:color .6s var(--ease-out),border-color .6s var(--ease-out)}.about__link:hover{color:var(--text-muted);border-color:var(--text-muted)}.page-fade{flex:1;display:flex;flex-direction:column;transition:opacity .3s var(--ease-out);opacity:1}.page-fade--out{opacity:0}.page-fade--in{opacity:1}.photo-stream__sentinel{height:1px}.pensieve-gallery{position:fixed;top:0;right:0;bottom:0;left:0;width:100vw;height:100vh;height:100dvh;overflow:hidden;background:var(--bg);display:flex;align-items:center;justify-content:center;z-index:1;touch-action:none;overscroll-behavior:none}.pensieve-gallery__vignette{position:absolute;top:0;right:0;bottom:0;left:0;z-index:3;pointer-events:none;background:radial-gradient(ellipse 80% 75% at 50% 50%,transparent 50%,rgba(0,0,0,.15) 75%,rgba(0,0,0,.4) 100%)}.pensieve-gallery__grain{position:absolute;top:-50%;right:-50%;bottom:-50%;left:-50%;z-index:4;pointer-events:none;opacity:.035;mix-blend-mode:overlay;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");background-size:256px 256px;animation:pensieve-grain-shift .8s steps(4) infinite}.pensieve-gallery__crossfade{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0;touch-action:none;overflow:hidden}.pensieve-gallery__img{position:absolute;top:0;right:0;bottom:0;left:0;margin:auto;max-width:min(85vw,100%);max-height:82vh;width:auto;height:auto;will-change:opacity;animation:pensieve-gallery-drift 20s ease-in-out infinite,pensieve-gallery-breathe 8s ease-in-out infinite}.pensieve-gallery__img--front{z-index:2;opacity:1;transition:opacity 2.5s var(--ease-in-out)}.pensieve-gallery__img--fading{opacity:0}.pensieve-gallery__img--back{z-index:1;opacity:0;transition:opacity 2.5s var(--ease-in-out)}.pensieve-gallery__img--revealing{opacity:1}.pensieve-gallery__img--hidden-behind{opacity:0!important;z-index:0!important}@keyframes pensieve-gallery-drift{0%{translate:0 0}20%{translate:3px -2px}40%{translate:-2px 3px}60%{translate:4px 1px}80%{translate:-1px -3px}to{translate:0 0}}@keyframes pensieve-gallery-breathe{0%,to{scale:1}50%{scale:1.015}}@keyframes pensieve-grain-shift{0%{transform:translate(0)}25%{transform:translate(-64px,32px)}50%{transform:translate(32px,-64px)}75%{transform:translate(-32px,-32px)}to{transform:translate(0)}}.pensieve-gallery__whisper{position:absolute;bottom:max(5vh,env(safe-area-inset-bottom) + 16px);left:50%;transform:translate(-50%);z-index:15;display:flex;align-items:center;gap:8px;opacity:0;transition:opacity .8s var(--ease-out);pointer-events:none}.pensieve-gallery__whisper--visible{opacity:1;transition:opacity 2s .5s var(--ease-out)}.pensieve-gallery__whisper-location{font-family:var(--font-heading);font-style:italic;font-size:.85rem;color:#ffffff8c;letter-spacing:.04em}.pensieve-gallery__whisper-sep{color:#ffffff40;font-size:.7rem}.pensieve-gallery__whisper-film{font-size:.75rem;color:#ffffff59;letter-spacing:.02em}.pensieve-gallery__controls{position:absolute;top:calc(var(--header-height) + max(8px,env(safe-area-inset-top)));right:max(var(--gutter),env(safe-area-inset-right));z-index:20}.grid-toggle{position:fixed;bottom:max(24px,env(safe-area-inset-bottom) + 8px);left:max(24px,env(safe-area-inset-left) + 8px);z-index:9990;padding:8px 14px;display:flex;align-items:center;gap:6px;color:var(--text-muted);opacity:.8;font-family:var(--font-heading);font-style:italic;font-size:.75rem;letter-spacing:.03em;background:#1c1917d9;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border:1px solid var(--border);border-radius:20px;transition:opacity .4s var(--ease-out),color .4s var(--ease-out),background .4s var(--ease-out);cursor:pointer}.grid-toggle:hover{opacity:1;color:var(--text);background:#1c1917f2}.grid-toggle--active{opacity:.85}@media(max-width:768px){.pensieve-gallery__img{max-width:min(92vw,100%);max-height:78vh}}@media(max-width:480px)and (orientation:portrait){.pensieve-gallery__img{max-width:92vw;max-height:65vh}}.pensieve-gallery__img--focused{max-width:min(65vw,100%);max-height:62vh;animation:pensieve-gallery-breathe 8s ease-in-out infinite;transition:max-width .6s var(--ease-out),max-height .6s var(--ease-out),opacity 2.5s var(--ease-in-out)}.pensieve-gallery--pulling .pensieve-gallery__img--front{scale:calc(1 + var(--pull-progress, 0) * .15)}.pensieve-gallery__neighbors{position:absolute;bottom:max(10vh,env(safe-area-inset-bottom) + 60px);left:50%;transform:translate(-50%);z-index:10;display:flex;align-items:center;justify-content:center;gap:clamp(8px,1.5vw,16px);max-width:80vw;overflow:hidden;padding:16px 0 4px;scrollbar-width:none}.pensieve-gallery__neighbors::-webkit-scrollbar{display:none}.pensieve-gallery__neighbor{padding:0;border:none;background:none;cursor:pointer;opacity:0;animation:neighbor-fade-in .4s var(--ease-out) forwards;transition:transform .25s var(--ease-out);flex-shrink:0}@keyframes neighbor-fade-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.pensieve-gallery__neighbor:hover{transform:translateY(-3px)}.pensieve-gallery__neighbor:hover .pensieve-gallery__neighbor-img{filter:saturate(.85) brightness(1);opacity:1}.pensieve-gallery__neighbor-img{width:clamp(48px,5.5vw,80px);height:clamp(48px,5.5vw,80px);object-fit:cover;display:block;border-radius:2px;filter:saturate(.5) brightness(.8);opacity:.7;transition:filter .25s var(--ease-out),opacity .25s var(--ease-out)}.pensieve-gallery--pulling .pensieve-gallery__neighbors{opacity:calc(1 - var(--pull-progress, 0));pointer-events:none}.pensieve-gallery__pull-darken{position:absolute;top:0;right:0;bottom:0;left:0;z-index:3;pointer-events:none;background:radial-gradient(ellipse 80% 75% at 50% 50%,#0000001a 30%,#00000080 70%,#000000d9);opacity:var(--pull-progress, 0);will-change:opacity}.pensieve-gallery__thread-depth{position:absolute;bottom:max(5vh,env(safe-area-inset-bottom) + 24px);left:50%;transform:translate(-50%);z-index:15;font-family:var(--font-sans, "Inter", sans-serif);font-size:11px;letter-spacing:.05em;color:#fff6;animation:neighbor-fade-in .4s var(--ease-out) forwards}@media(max-width:768px){.pensieve-gallery__img--focused{max-width:min(78vw,100%);max-height:60vh}.pensieve-gallery__neighbor-img{width:clamp(40px,10vw,60px);height:clamp(40px,10vw,60px)}}@media(max-width:480px){.pensieve-gallery__img--focused{max-width:88vw;max-height:50vh}.pensieve-gallery__neighbors{gap:6px;bottom:max(12vh,env(safe-area-inset-bottom) + 72px)}.pensieve-gallery__neighbor-img{width:clamp(36px,12vw,48px);height:clamp(36px,12vw,48px);filter:saturate(.7) brightness(.9);opacity:.85}.pensieve-gallery__neighbors~.pensieve-gallery__whisper{opacity:0!important}.pensieve-gallery__neighbors~.grid-toggle{opacity:0!important;pointer-events:none}.grid-toggle{bottom:auto;top:calc(var(--header-height) + max(8px,env(safe-area-inset-top)));left:max(16px,env(safe-area-inset-left) + 8px)}}@media(pointer:coarse){.pensieve-gallery__whisper--visible{opacity:.8}.pensieve-gallery__grain{display:none}.pensieve-gallery__img{animation:pensieve-gallery-breathe 8s ease-in-out infinite}.pensieve-gallery__neighbor:active{transform:scale(.92)}.grid-toggle{min-height:44px}.grid-toggle:active{opacity:1;transform:scale(.95)}.lightbox__arrow:active{transform:scale(.92)}.pill:active{border-color:var(--text-muted);background:#ffffff0d}}
