.gallery-page{padding-bottom:var(--space-16)}.gallery-container{position:relative;display:flex;gap:0}.gallery-content{flex:1;min-width:0;padding-right:28px}@media(max-width:639px){.gallery-content{padding-right:24px}}.month-section{margin-bottom:var(--space-10)}.month-section:last-child{margin-bottom:0}.month-header{display:flex;align-items:baseline;gap:var(--space-3);margin-bottom:var(--space-4);padding-bottom:var(--space-2);position:sticky;top:0;z-index:10;background:var(--color-white);padding-top:var(--space-3)}.lazy-placeholder{column-span:all;padding:var(--space-8) 0;text-align:center}.lazy-placeholder__text{color:var(--color-gray-400);font-size:var(--text-sm)}.date-slider{position:fixed;right:4px;top:50%;transform:translateY(-50%);z-index:50;display:flex;flex-direction:column;align-items:center;height:60vh;width:24px;user-select:none;-webkit-user-select:none;touch-action:none}.date-slider__track{position:relative;width:4px;height:100%;background:var(--color-gray-200);border-radius:2px;cursor:pointer}.date-slider__thumb{position:absolute;left:50%;transform:translate(-50%);width:14px;height:14px;border-radius:50%;background:var(--color-primary);box-shadow:0 1px 4px #0003;transition:top .1s ease-out;top:0;cursor:grab}.date-slider__thumb:active{cursor:grabbing;width:16px;height:16px}.date-slider__bubble{position:absolute;right:32px;background:var(--color-charcoal);color:var(--color-white);font-size:var(--text-sm);font-weight:600;padding:var(--space-1) var(--space-3);border-radius:var(--radius-md);white-space:nowrap;pointer-events:none;box-shadow:0 2px 8px #00000026;transition:opacity .15s ease}.date-slider__bubble[hidden]{display:block;opacity:0;pointer-events:none}.date-slider__bubble:after{content:"";position:absolute;right:-6px;top:50%;transform:translateY(-50%);width:0;height:0;border-left:6px solid var(--color-charcoal);border-top:5px solid transparent;border-bottom:5px solid transparent}.date-slider__labels{display:none}@media(max-width:400px){.date-slider{right:2px;width:20px;height:50vh}.date-slider__thumb{width:12px;height:12px}}.month-header h2{font-size:1.1rem;font-weight:600;margin:0;letter-spacing:-.01em}.photo-count{font-size:var(--text-sm);color:var(--color-gray-400);font-weight:400}.masonry-grid{column-count:2;column-gap:4px}@media(min-width:640px){.masonry-grid{column-count:3;column-gap:4px}}@media(min-width:900px){.masonry-grid{column-count:4;column-gap:4px}}@media(min-width:1200px){.masonry-grid{column-count:5;column-gap:4px}}.photo-item{display:block;width:100%;margin-bottom:4px;break-inside:avoid;overflow:hidden;border-radius:var(--radius-lg);cursor:pointer;background:var(--color-gray-100);border:none;padding:0;position:relative}.photo-item img{display:block;width:100%;height:auto;transition:transform .2s ease,filter .2s ease}.photo-item:hover img{transform:scale(1.03);filter:brightness(.9)}.photo-item:focus-visible{outline:3px solid var(--color-primary);outline-offset:2px;border-radius:var(--radius-sm)}.lightbox{position:fixed;inset:0;z-index:var(--z-modal);display:flex;align-items:center;justify-content:center}.lightbox[hidden]{display:none}.lightbox__backdrop{position:absolute;inset:0;background-color:#000000f2;cursor:pointer}.lightbox__content{position:relative;width:100%;height:100%;display:flex;align-items:center;justify-content:center}.lightbox__topbar{position:absolute;top:0;left:0;right:0;display:flex;align-items:center;justify-content:space-between;padding:var(--space-3) var(--space-4);z-index:2;background:linear-gradient(to bottom,rgba(0,0,0,.5),transparent)}.lightbox__counter{color:#fffc;font-size:var(--text-sm);font-weight:500}.lightbox__close{display:flex;align-items:center;justify-content:center;width:var(--touch-target-min);height:var(--touch-target-min);color:var(--color-white);background:none;border:none;cursor:pointer;border-radius:var(--radius-full);transition:background-color var(--transition-fast)}.lightbox__close:hover{background-color:#ffffff1a}.lightbox__nav{position:absolute;top:50%;transform:translateY(-50%);display:flex;align-items:center;justify-content:center;width:var(--touch-target-min);height:var(--touch-target-min);color:var(--color-white);background-color:#0000004d;border:none;border-radius:var(--radius-full);cursor:pointer;z-index:2;transition:background-color var(--transition-fast)}.lightbox__nav:hover{background-color:#0009}.lightbox__nav--prev{left:var(--space-3)}.lightbox__nav--next{right:var(--space-3)}.lightbox__figure{margin:0;text-align:center;max-width:95vw;max-height:95vh;z-index:1}.lightbox__figure img{max-width:95vw;max-height:90vh;object-fit:contain;border-radius:2px}.lightbox__figure figcaption{position:absolute;bottom:var(--space-4);left:50%;transform:translate(-50%);color:#fffc;font-size:var(--text-sm);background:#00000080;padding:var(--space-1) var(--space-3);border-radius:var(--radius-md);white-space:nowrap;max-width:80vw;overflow:hidden;text-overflow:ellipsis}.gallery-edit-mode .photo-item{cursor:crosshair}.gallery-edit-mode .photo-item:after{content:"";position:absolute;inset:0;border:3px solid transparent;border-radius:inherit;pointer-events:none;transition:border-color .15s,background-color .15s}.gallery-edit-mode .photo-item--selected:after{border-color:var(--color-primary);background-color:#c41e3a4d}.gallery-edit-mode .photo-item--selected:before{content:"✗";position:absolute;top:6px;right:6px;z-index:5;width:24px;height:24px;display:flex;align-items:center;justify-content:center;background:var(--color-primary);color:#fff;border-radius:50%;font-size:14px;font-weight:700;pointer-events:none}.edit-toolbar{position:fixed;bottom:0;left:0;right:0;z-index:100;display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);background:var(--color-charcoal);color:#fff;font-size:var(--text-sm);box-shadow:0 -2px 12px #0000004d}.edit-toolbar__count{font-weight:600;min-width:120px}.edit-toolbar__btn{padding:var(--space-1) var(--space-3);border:1px solid rgba(255,255,255,.3);border-radius:var(--radius-md);background:transparent;color:#fff;cursor:pointer;font-size:var(--text-sm);transition:background .15s}.edit-toolbar__btn:hover{background:#ffffff26}.edit-toolbar__btn--clear{margin-left:auto;border-color:var(--color-primary);color:#f99}@keyframes fadeIn{0%{opacity:0;transform:scale(.98)}to{opacity:1;transform:scale(1)}}.photo-item img{animation:fadeIn .3s ease-out}
