/* Dense, responsive editorial gallery for large photo archives. */
.journey.section{max-width:1900px;margin:0 auto;padding:88px clamp(22px,4vw,72px) 112px}
.journey .section-heading{margin:0 0 26px;align-items:center}
.journey .section-heading h2{font-size:clamp(30px,3vw,42px)}
.gallery-lede{margin:12px 0 0;color:#8e8a80;font:13px/1.7 var(--serif)}
.timeline-wrap{display:block}
.gallery-toolbar{position:sticky;top:0;z-index:4;display:flex;align-items:center;gap:18px;padding:13px 0;margin:0 0 18px;background:#f6f4eff0;backdrop-filter:blur(14px);border-bottom:1px solid #dedbd39c}
.gallery-search{display:flex;align-items:center;gap:9px;min-width:220px;max-width:390px;flex:1;border:1px solid #dedbd3;background:#fbfaf7;border-radius:999px;padding:0 15px;color:#a09b91}
.gallery-search span{font-size:21px;line-height:1}
.gallery-search input{width:100%;border:0;background:transparent;outline:0;padding:11px 0;font:11px var(--sans);color:var(--ink)}
.gallery-search input::placeholder{color:#aaa59a}
.gallery-filters{display:flex;align-items:center;gap:14px}
.filter-pills{display:flex;gap:3px;padding:3px;background:#ebe9e2;border-radius:99px}
.filter-pills button{border:0;border-radius:99px;background:transparent;color:#858176;padding:8px 13px;font-size:10px;white-space:nowrap}
.filter-pills button.active{background:#fff;color:#26251f;box-shadow:0 2px 8px #302c2110}
#yearFilter{border:1px solid #dedbd3;border-radius:99px;background:#fbfaf7;padding:9px 30px 9px 13px;color:#69665e;font:10px var(--sans);outline:none}
.gallery-count{margin-left:auto;color:#9b978d;font-size:10px;white-space:nowrap}
.memory-list{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));grid-auto-rows:7px;grid-auto-flow:dense;gap:12px;align-items:start}
.memory-card{position:relative;display:flex;flex-direction:column;min-width:0;min-height:0;overflow:hidden;background:#fffdf9;border:1px solid #ebe8e0;border-radius:5px;box-shadow:0 2px 7px #332b1d08;cursor:zoom-in;opacity:0;transform:translateY(15px) rotateX(0) rotateY(0);transition:opacity .55s ease,transform .42s cubic-bezier(.2,.7,.2,1),box-shadow .32s,border-color .32s;transition-delay:var(--card-delay,0ms);transform:perspective(900px) translateY(14px) rotateX(var(--tilt-x,0deg)) rotateY(var(--tilt-y,0deg))}
.memory-card.in-view{opacity:1;transform:perspective(900px) translateY(0) rotateX(var(--tilt-x,0deg)) rotateY(var(--tilt-y,0deg))}
.memory-card:hover{transform:perspective(900px) translateY(-4px) rotateX(var(--tilt-x,0deg)) rotateY(var(--tilt-y,0deg));box-shadow:0 18px 38px #332b1d17;border-color:#d6cabb;z-index:1}
.memory-image{position:relative;width:100%;height:auto;aspect-ratio:1.12;overflow:hidden;background:linear-gradient(135deg,#ded6c8,#eee8de)}
.memory-card:nth-child(8n+1) .memory-image{aspect-ratio:.84}
.memory-card:nth-child(8n+4) .memory-image{aspect-ratio:1.38}
.memory-card:nth-child(8n+6) .memory-image{aspect-ratio:1.02}
.memory-image img,.memory-image video{display:block;width:100%;height:100%;min-height:0;object-fit:cover;filter:saturate(.86);transition:transform .65s cubic-bezier(.2,.7,.2,1),filter .4s}
.memory-card:hover .memory-image img,.memory-card:hover .memory-image video{transform:scale(1.045);filter:saturate(1)}
.memory-image em{position:absolute;left:11px;bottom:11px;padding:6px 8px;border:1px solid #ffffff59;border-radius:99px;background:#25241f52;color:#fff;font:9px var(--sans);letter-spacing:.1em;backdrop-filter:blur(8px)}
.memory-open{position:absolute;right:10px;top:10px;width:27px;height:27px;border-radius:50%;display:grid;place-items:center;background:#f6f4efdc;color:#393830;opacity:0;transform:translateY(3px);transition:.25s}
.memory-card:hover .memory-open{opacity:1;transform:none}
.live-play{position:absolute;inset:0;margin:auto;width:48px;height:48px;display:grid;place-items:center;padding-left:3px;border:1px solid #ffffffb0;border-radius:50%;background:#17171442;color:#fff;font-size:14px;backdrop-filter:blur(8px);opacity:0;transform:scale(.88);transition:.25s;pointer-events:none}
.memory-card:hover .live-play{opacity:1;transform:scale(1)}
.memory-info{display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-start;padding:13px 15px 15px;min-height:104px}
.memory-date{margin:0 0 7px;color:#ba7158;font-size:9px;letter-spacing:.09em}
.memory-info h3{margin:0 0 6px;font:500 15px/1.55 var(--serif);letter-spacing:.015em}
.memory-info p{margin:0;color:#89857c;font:11px/1.7 var(--serif);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.memory-place{margin-top:9px;color:#979187;font-size:9px;letter-spacing:.03em}
.gallery-more{min-height:82px;display:flex;align-items:center;justify-content:center;gap:14px;padding:28px 0 0}
.gallery-more .pill{transition:transform .2s,background .2s}
.gallery-more small{color:#9e998f;font-size:9px}
.upload-actions{position:sticky;bottom:0;z-index:2;display:flex;align-items:center;justify-content:space-between;gap:12px;margin:14px -8px -10px;padding:12px 8px;background:#f6f4eff2;border-top:1px solid var(--line);backdrop-filter:blur(12px)}
.upload-actions span{color:#89857c;font-size:10px}
.upload-actions .pill{padding:12px 17px}
.upload-actions button:disabled{opacity:.45;cursor:wait}
.memory-viewer{position:fixed;inset:0;z-index:20;display:grid;grid-template-columns:70px minmax(0,1fr) 70px;grid-template-rows:minmax(0,1fr) auto;background:#171714f5;color:#f7f3ea;padding:20px clamp(8px,3vw,42px) 28px;animation:viewerIn .22s ease-out}
@keyframes viewerIn{from{opacity:0}to{opacity:1}}
.viewer-media{grid-column:2;grid-row:1;min-width:0;min-height:0;display:grid;place-items:center;overflow:hidden;touch-action:none}
.viewer-media img,.viewer-media video{display:block;max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain;box-shadow:0 22px 80px #0006;transform-origin:center;transition:transform .14s ease-out}
.viewer-zoom{position:absolute;right:clamp(12px,4vw,58px);bottom:84px;display:flex;align-items:center;gap:5px;padding:5px;border:1px solid #ffffff24;border-radius:99px;background:#252520a8;backdrop-filter:blur(12px)}
.viewer-zoom button{min-width:34px;height:32px;border:0;border-radius:99px;background:transparent;color:#f7f3ea;font:14px var(--sans)}
.viewer-zoom button:hover{background:#ffffff20}.viewer-zoom #zoomReset{padding:0 11px;font-size:9px}
.map-credit,.repair-status{display:block;margin-top:11px;color:#938e84;font-size:9px;line-height:1.7}.repair-places{margin:10px 0 4px!important;color:#8b6754!important;font-size:10px!important}
.viewer-caption{grid-column:2;grid-row:2;display:flex;align-items:baseline;gap:16px;padding:18px 2px 0}
.viewer-caption span,.viewer-caption small{color:#c5bdb0;font-size:10px}
.viewer-caption strong{font:500 17px var(--serif)}
.viewer-close,.viewer-arrow{align-self:center;justify-self:center;border:1px solid #ffffff38;border-radius:50%;background:#ffffff0d;color:#fff;width:42px;height:42px;font-size:22px;transition:background .2s}
.viewer-close:hover,.viewer-arrow:hover{background:#ffffff26}
.viewer-close{position:absolute;right:25px;top:22px;align-self:start}
.viewer-prev{grid-column:1;grid-row:1}.viewer-next{grid-column:3;grid-row:1}
@media(max-width:1450px){.memory-list{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media(max-width:1040px){.journey.section{padding-left:24px;padding-right:24px}.memory-list{grid-template-columns:repeat(3,minmax(0,1fr))}.gallery-toolbar{gap:10px}.gallery-filters{gap:8px}}
@media(max-width:760px){.journey.section{padding:68px 16px 82px}.journey .section-heading{align-items:flex-end}.gallery-toolbar{position:relative;top:auto;flex-wrap:wrap}.gallery-search{max-width:none;flex-basis:100%}.gallery-filters{width:100%;justify-content:space-between}.gallery-count{margin-left:0}.memory-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.memory-info{padding:11px 11px 13px}.memory-info h3{font-size:13px}.memory-info p{font-size:10px}.memory-image em{left:7px;bottom:7px}.memory-viewer{grid-template-columns:42px minmax(0,1fr) 42px;padding:14px 5px 20px}.viewer-caption{gap:8px;flex-wrap:wrap}.viewer-caption strong{width:100%;order:1}.viewer-close{right:12px;top:12px;width:36px;height:36px;z-index:1}}
@media(max-width:420px){.filter-pills button{padding:8px 9px;font-size:9px}.journey .section-heading h2{font-size:23px}.gallery-lede{font-size:11px}}
@media(prefers-reduced-motion:reduce){.memory-card,.memory-image img,.memory-image video{transition:none!important;animation:none!important}.memory-card{opacity:1;transform:none}}
