.memory-page{max-width:1440px;margin:0 auto;padding:3rem clamp(1rem,4vw,4rem) 5rem}
.memory-heading{margin-bottom:2rem}
.memory-heading h1{margin:0;font-family:'Archivo',sans-serif;font-size:clamp(2.4rem,4.8vw,4.5rem);line-height:1.08;letter-spacing:-.045em}
.memory-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1rem;align-items:start}
.memory-card{min-width:0;background:var(--surface);border:1px solid var(--line);border-radius:22px;overflow:hidden;break-inside:avoid}
.memory-photo{display:flex;align-items:center;justify-content:center;min-height:230px;padding:12px;background:var(--soft);text-decoration:none;cursor:zoom-in}
.memory-photo img{display:block;width:auto;height:auto;max-width:100%;max-height:29rem;border-radius:12px}
.memory-photo:hover{background:#ddd7cc}
.memory-photo:focus-visible{outline:3px solid var(--accent);outline-offset:-4px}
.memory-copy{padding:1.2rem}
.memory-category{margin:0 0 .6rem;font-size:.875rem;font-weight:600;color:var(--accent)}
.memory-copy h2{margin:0;font-family:'Archivo',sans-serif;font-size:1.4rem;line-height:1.2;letter-spacing:-.025em}
.memory-story{margin:.8rem 0 0;font-size:1rem;line-height:1.6;color:#4f4c47}
.memory-extra-photos{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem;padding:.5rem .75rem;background:var(--soft)}
.memory-extra-photos--three{grid-template-columns:repeat(3,minmax(0,1fr))}
.memory-extra-photos a{display:flex;align-items:center;justify-content:center;cursor:zoom-in;min-height:44px}
.memory-extra-photos img{width:auto;height:auto;max-width:100%;border-radius:8px}
.memory-extra-photos a:focus-visible{outline:3px solid var(--accent);outline-offset:2px}
.memories-body .nav-links a{font-size:.875rem;padding:.72rem .65rem}
.memories-body .nav-links a[aria-current="page"]{background:var(--ink);color:white}
.memories-body .menu-toggle,.memories-body .footer-links a{font-size:.875rem}
.photo-dialog{width:min(1080px,calc(100vw - 24px));max-height:calc(100dvh - 24px);padding:0;border:1px solid var(--line);border-radius:22px;background:var(--bg);color:var(--ink);overflow:auto;box-shadow:0 24px 90px #0006}
.photo-dialog::backdrop{background:#000b;backdrop-filter:blur(4px)}
.dialog-toolbar{display:flex;justify-content:flex-end;padding:12px;position:sticky;top:0;background:var(--bg);z-index:1}
.dialog-close{min-height:44px;padding:.65rem 1rem;border:0;border-radius:999px;background:var(--ink);color:white;font-size:1rem;cursor:pointer}
.dialog-close:focus-visible{outline:3px solid var(--accent);outline-offset:3px}
.dialog-photo{width:auto;height:auto;max-width:calc(100% - 24px);max-height:70dvh;margin:0 auto;object-fit:contain;border-radius:12px}
.dialog-copy{padding:1.25rem clamp(1rem,3vw,2rem) 1.75rem}
.dialog-copy h2{margin:0;font-family:'Archivo',sans-serif;font-size:1.5rem;line-height:1.2}
.dialog-copy p{margin:.7rem 0 0;font-size:1rem;line-height:1.6}
body.photo-open{overflow:hidden}
@media(max-width:1180px){.memory-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:960px){.memory-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:860px){.memory-page{padding-top:2.5rem}.memories-body .nav-links a{padding:.9rem 1rem}}
@media(max-width:560px){.memory-grid{grid-template-columns:1fr}.memory-page{padding:2rem 1rem 3rem}.memory-heading{margin-bottom:1.5rem}.memory-photo{min-height:230px}.memory-photo img{max-height:34rem}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
