* { box-sizing: border-box; }
body { margin: 0; }
a { color: inherit; text-decoration: none; }
a:hover { color: var(--accent); }
body > header { border-bottom: 1px solid var(--line); }
.gallery-header, .gallery-main, .gallery-footer { width: min(1200px, 100% - 64px); margin-inline: auto; }
.gallery-header { display: flex; align-items: center; justify-content: space-between; gap: 28px; }
.gallery-header nav { display: flex; align-items: center; gap: 28px; }
#theme-toggle { padding: 8px 0; border: 0; background: transparent; color: var(--muted); cursor: pointer; }
#theme-toggle:hover { color: var(--accent); }
.gallery-main { padding-block: 64px 72px; }
.gallery-main h1 { margin: 0 0 48px; font-family: var(--font-display); font-size: clamp(42px, 5vw, 64px); font-weight: 400; letter-spacing: -.03em; line-height: 1.1; }
#gallery-status { color: var(--muted); }
.project-gallery { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); align-items: start; gap: 52px 32px; }
.project-media { margin: 0; min-width: 0; }
.project-media img, .project-media video { display: block; width: 100%; height: clamp(260px, 30vw, 380px); max-width: 100%; object-fit: contain; }
.project-media video { background: var(--paper); }
.project-media figcaption { padding-top: 12px; color: var(--muted); font-size: 13px; line-height: 1.5; }
.media-error { padding-block: 24px; color: var(--muted); }
.media-error a { text-decoration: underline; }
.gallery-footer { padding-block: 24px 48px; border-top: 1px solid var(--line); font-size: 14px; }
@media (max-width: 767px) {
    .gallery-header, .gallery-main, .gallery-footer { width: calc(100% - 40px); }
    .gallery-header { flex-wrap: wrap; gap: 8px; padding-block: 16px; }
    .gallery-header nav { gap: 20px; font-size: 13px; }
    .gallery-main { padding-block: 40px 48px; }
    .gallery-main h1 { margin-bottom: 32px; }
    .project-gallery { grid-template-columns: minmax(0, 1fr); gap: 36px; }
    .project-media img, .project-media video { height: auto; max-height: 65vh; }
}

.project-media figcaption a { color: var(--ink); text-decoration: underline; text-underline-offset: 3px; }
.project-media figcaption a:hover { color: var(--accent); }
