/* Forms, photographic collections and travel journals. */
.book-filters { border: 0; background: #e8f2ef; border-radius: 24px; padding: 24px; gap: 22px; margin-bottom: 28px; }
.book-filters input, .book-filters select { border: 1px solid #b5ceca; border-radius: 13px; background: #fcfdfb; }
.book-filters input:focus-visible, .book-filters select:focus-visible { outline: 2px solid var(--teal); outline-offset: 3px; }
.language-pair { border: 0; padding: 18px 22px; border-radius: 18px; background: #e5f1ed; margin: 24px 0; }
.language-pair strong { display: block; font-size: 1rem; }
.language-pair p { margin: 6px 0 0; font-size: .95rem; }
.language-pair a { text-decoration: underline; text-underline-offset: 4px; }
.contact-layout { display: grid; grid-template-columns: .8fr 1.2fr; gap: 10%; padding-bottom: 100px; }
.contact-aside > img { width: 100px; height: 112px; object-fit: cover; border-radius: 24px; margin-bottom: 28px; }
.contact-aside h2 { font-size: 2.5rem; }
.contact-aside p { color: var(--muted); max-width: 40ch; }
.contact-books { margin-top: 45px; }
.contact-books h3 { font-size: 1.5rem; }
.contact-form { align-self: start; padding: 38px; background: #e8f3ef; border-radius: 26px; }
.contact-form label { display: block; margin-bottom: 8px; font-weight: 500; }
.contact-form input:not([type=hidden]), .contact-form textarea { width: 100%; padding: 14px 16px; border: 1px solid #a9c6c4; border-radius: 12px; background: var(--paper); color: var(--ink); margin-bottom: 24px; }
.contact-form textarea { resize: vertical; min-height: 180px; }
.contact-form [aria-invalid=true] { border: 2px solid #aa483d; }
.contact-trap { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
.form-privacy { font-size: .82rem; color: #486469; }
.form-privacy a { text-decoration: underline; }
.form-errors, .form-notice { padding: 18px; border-radius: 12px; margin-bottom: 24px; background: #fff; }
.form-errors { border-left: 3px solid #aa483d; }
.form-errors p { margin-bottom: 8px; }
.form-errors a { text-decoration: underline; }
.search-topics { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin: -15px 0 45px; }
.search-topics span { font-size: .85rem; color: var(--muted); margin-right: 5px; }
.search-topics button { border: 1px solid #b9d2ce; border-radius: 999px; padding: 8px 18px; background: #edf5f1; color: var(--ink); }
.search-topics button:hover { background: var(--green); color: white; }
.photo-grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 35px 25px; padding-block: 20px 70px; }
.archive-photo { min-width: 0; margin: 0; }
.archive-photo a { display: block; border-radius: 22px; overflow: hidden; background: #e2ede8; }
.archive-photo img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; transition: transform .45s ease, filter .45s ease; }
.archive-photo a:hover img { transform: scale(1.04); filter: saturate(1.08); }
.archive-photo figcaption { padding-inline: 6px; font-size: .875rem; line-height: 1.5; }
.photo-grid .archive-photo { animation: photo-arrive .6s ease both; }
.photo-grid .archive-photo:nth-child(3n+2) { animation-delay: .1s; }
.photo-grid .archive-photo:nth-child(3n) { animation-delay: .2s; }
@keyframes photo-arrive { from { opacity: 0; transform: translateY(18px); } to { opacity: 1; transform: none; } }
.archive-hero { margin: 30px 0 60px; }
.archive-hero img { width: 100%; max-height: 540px; object-fit: contain; border-radius: 28px; background: #e5efeb; }
.archive-introduction { margin-bottom: 70px; }
.archive-timeline { position: relative; margin: 30px auto 80px; max-width: 1050px; }
.archive-timeline::before { content: ''; position: absolute; top: 0; bottom: 0; left: 30%; width: 2px; background: linear-gradient(transparent, #73b9b6 4%, #73b9b6 96%, transparent); }
.archive-timeline .journal-entry { display: grid; grid-template-columns: 30% 1fr; gap: 45px; padding-block: 30px; position: relative; }
.archive-timeline .journal-entry::before { content: ''; position: absolute; left: calc(30% - 6px); top: 43px; width: 14px; height: 14px; border-radius: 50%; background: var(--teal); box-shadow: 0 0 0 7px var(--paper); }
.journal-entry h2 { font-size: 1.7rem; line-height: 1.25; }
.archive-timeline .journal-entry h2 { padding-right: 25px; }
.archive-timeline .journal-photos img { aspect-ratio: auto; object-fit: contain; }
.archive-journal .journal-entry { padding: 55px 0; border-top: 1px solid #c5deda; }
.archive-journal .journal-entry h2 { color: var(--teal); margin-bottom: 30px; }
.archive-journal .journal-entry-content { display: grid; grid-template-columns: 1.2fr .8fr; gap: 6%; align-items: start; }
.journal-photos { display: grid; gap: 28px; }
.archive-journal .journal-photos img { aspect-ratio: auto; object-fit: contain; }
.travel-reports { padding-block: 50px 80px; }
.travel-report { border-bottom: 1px solid var(--line); }
.travel-report summary { display: flex; align-items: center; gap: 30px; padding: 25px 8px; }
.travel-report summary::after { content: '+'; margin-left: auto; font-size: 1.5rem; }
.travel-report[open] summary::after { content: '−'; }
.travel-report summary span { font-size: .875rem; color: var(--muted); }
.travel-report summary strong { font-size: 1.25rem; font-weight: 500; }
.travel-report .prose { padding: 25px 0 50px; }
.photo-viewer { border: 0; padding: 20px; background: #092f36; color: white; border-radius: 24px; width: min(1100px,95vw); max-height: 94vh; }
.photo-viewer::backdrop { background: #08252cdd; backdrop-filter: blur(8px); }
.photo-viewer > button { display: block; margin: 0 0 18px auto; border: 1px solid #96bdbb; border-radius: 999px; padding: 10px 20px; background: transparent; color: white; }
.photo-viewer figure { margin: 0; }
.photo-viewer img { width: 100%; max-height: 72vh; object-fit: contain; border-radius: 14px; }
.photo-viewer figcaption { color: #d4e8e3; }
@media(max-width:900px) { .photo-grid { grid-template-columns: repeat(2,minmax(0,1fr)); } }
@media(max-width:760px) {
 .contact-layout { grid-template-columns: 1fr; gap: 35px; }
 .contact-aside { order: 2; }
 .contact-form { padding: 25px 20px; }
 .photo-grid { gap: 25px 16px; }
 .archive-photo a { border-radius: 15px; }
 .archive-photo figcaption { font-size: .78rem; }
 .archive-timeline::before { left: 7px; }
 .archive-timeline .journal-entry { display: block; padding: 25px 0 25px 35px; }
 .archive-timeline .journal-entry::before { left: 1px; top: 32px; }
 .archive-timeline .journal-entry h2 { font-size: 1.5rem; }
 .archive-journal .journal-entry-content { grid-template-columns: 1fr; gap: 20px; }
 .archive-journal .journal-entry { padding-block: 35px; }
 .journal-photos { grid-template-columns: repeat(2,minmax(0,1fr)); gap: 18px; }
 .journal-photos .archive-photo:only-child { grid-column: 1 / -1; }
 .travel-report summary { gap: 12px; flex-wrap: wrap; }
 .travel-report summary strong { font-size: 1rem; }
 .search-topics { margin-top: 0; }
}
@media(prefers-reduced-motion:reduce) { .photo-grid .archive-photo { animation: none; } .archive-photo img { transition: none; } }
