:root {
  --background: #f4eaf0;
  --ink: #4b2035;
  --muted: #755c69;
  --line: #d8c8d0;
}

* { box-sizing: border-box; }
html { background: var(--background); color: var(--ink); font-family: system-ui, sans-serif; }
body { margin: 0; }
a { color: inherit; text-decoration: none; }
img { display: block; max-width: 100%; }
.visually-hidden { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
.site-header { position: sticky; top: 0; z-index: 10; display: flex; gap: 3rem; align-items: center; padding: 1.4rem max(1.5rem, calc((100% - 1280px) / 2)); background: color-mix(in srgb, var(--background) 94%, transparent); border-bottom: 1px solid var(--line); }
.archive-title { font-size: 1.15rem; white-space: nowrap; }
.archive-search { flex: 1; max-width: 620px; margin-left: auto; }
.archive-search input { width: 100%; border: 1px solid #bda8b3; border-radius: 999px; padding: .8rem 1rem; color: inherit; background: transparent; }
.archive-main { width: min(1280px, calc(100% - 3rem)); margin: 2rem auto 5rem; }
.decade-section { margin: 3rem 0; }
.decade-section h2 { font-weight: 400; }
.album-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 2.5rem 1.5rem; }
.album-card h3 { margin: .7rem 0 .15rem; font-size: 1rem; }
.album-card p { margin: 0; color: var(--muted); }
.album-cover { display: block; overflow: hidden; aspect-ratio: 3 / 2; border-radius: .7rem; }
.album-cover img { width: 100%; height: 100%; object-fit: cover; }
.album-cover-square { display: none; }
.photo-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 1rem; }
.photo-grid figure { margin: 0; }
.photo-grid figcaption { margin-top: .4rem; color: var(--muted); }

@media (max-width: 700px) {
  .site-header { gap: 1rem; padding: 1rem; }
  .archive-main { width: calc(100% - 2rem); }
  .album-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 2rem 1rem; }
  .album-cover { aspect-ratio: 1; }
  .album-cover-landscape { display: none; }
  .album-cover-square { display: block; }
  .photo-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

.admin-auth-shell { min-height: 100vh; display: grid; place-items: center; padding: 2rem; }
.admin-auth-card { width: min(100%, 430px); padding: 2rem; border: 1px solid var(--line); border-radius: 1rem; background: #fffafc; box-shadow: 0 1rem 3rem rgba(75,32,53,.08); }
.admin-auth-card h1 { margin-top: .25rem; }
.admin-auth-card form { display: grid; gap: 1rem; }
.admin-auth-card label { display: grid; gap: .35rem; font-weight: 650; }
.admin-auth-card input { width: 100%; border: 1px solid #bda8b3; border-radius: .55rem; padding: .8rem; font: inherit; }
.admin-auth-card button, .admin-header button { border: 0; border-radius: .55rem; padding: .8rem 1rem; background: var(--ink); color: white; font: inherit; font-weight: 700; cursor: pointer; }
.admin-eyebrow { margin: 0; text-transform: uppercase; letter-spacing: .12em; font-size: .72rem; color: var(--muted); }
.admin-error { padding: .75rem; border-radius: .5rem; background: #f9dce2; color: #721b32; }
.admin-header { display: flex; justify-content: space-between; align-items: center; padding: 1rem 2rem; background: #3e132a; color: white; }
.admin-header div { display: grid; gap: .2rem; }
.admin-header span { opacity: .75; font-size: .8rem; }
.admin-main { width: min(1100px, calc(100% - 3rem)); margin: 3rem auto; }
.admin-album-list { display: grid; gap: .7rem; }
.admin-album-row { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: 1rem 1.2rem; border: 1px solid var(--line); border-radius: .7rem; background: #fffafc; }
.admin-album-list h2 { margin: 0; font-size: 1rem; }
.admin-album-list p { margin: .2rem 0 0; color: var(--muted); }
.admin-success { padding: .75rem; border-radius: .5rem; background: #dff3e5; color: #175c2f; }
.admin-editor { display: grid; gap: 1.2rem; padding: 1.5rem; border: 1px solid var(--line); border-radius: .8rem; background: #fffafc; }
.admin-editor label { display: grid; gap: .4rem; font-weight: 650; }
.admin-editor input, .admin-editor textarea { width: 100%; border: 1px solid #bda8b3; border-radius: .45rem; padding: .7rem; font: inherit; color: var(--ink); background: white; }
.admin-field-row { display: grid; grid-template-columns: 2fr 1fr 1fr; gap: 1rem; }
.admin-field-row.two { grid-template-columns: repeat(2, minmax(0,1fr)); }
.admin-editor .admin-checkbox { display: flex; align-items: center; gap: .5rem; }
.admin-editor .admin-checkbox input { width: auto; }
.admin-editor > button { justify-self: start; border: 0; border-radius: .55rem; padding: .85rem 1.2rem; background: var(--ink); color: white; font: inherit; font-weight: 700; cursor: pointer; }
@media (max-width: 700px) { .admin-field-row, .admin-field-row.two { grid-template-columns: 1fr; } }
.admin-photos-section { margin-top: 3rem; }
.admin-section-heading { display: flex; align-items: end; justify-content: space-between; gap: 1rem; margin-bottom: 1rem; }
.admin-section-heading h2 { margin: .35rem 0 0; }
.admin-section-heading > p { color: var(--muted); }
.admin-photo-grid { display: grid; grid-template-columns: repeat(4, minmax(0,1fr)); gap: 1rem; }
.admin-photo-card { min-width: 0; padding: .65rem; border: 1px solid var(--line); border-radius: .7rem; background: #fffafc; }
.admin-photo-card img { width: 100%; aspect-ratio: 1; object-fit: cover; border-radius: .45rem; }
.admin-photo-card strong, .admin-photo-card span { display: block; margin-top: .45rem; }
.admin-photo-card span { overflow: hidden; color: var(--muted); font-size: .85rem; white-space: nowrap; text-overflow: ellipsis; }
.admin-photo-editor-layout { display: grid; grid-template-columns: minmax(0,1.4fr) minmax(320px,.6fr); gap: 1.5rem; align-items: start; }
.admin-photo-preview { display: grid; place-items: center; min-height: 500px; padding: 1rem; border-radius: .8rem; background: #2b2026; }
.admin-photo-preview img { max-height: 72vh; width: auto; }
.admin-editor small { font-weight: 400; color: var(--muted); }
@media (max-width: 800px) { .admin-photo-grid { grid-template-columns: repeat(2,minmax(0,1fr)); } .admin-photo-editor-layout { grid-template-columns: 1fr; } }
