* { box-sizing: border-box; }
:root { color-scheme: light; --ink: #202420; --muted: #535950; --gold: #d8c27a; --paper: #f7f6f1; --viewer-height: 58dvh; }
body { margin: 0; color: var(--ink); background: var(--paper); font-family: "Raleway", Arial, sans-serif; line-height: 1.65; }
button, select { font: inherit; }
button, a, select { -webkit-tap-highlight-color: transparent; }
a { color: inherit; text-underline-offset: 4px; }
button { cursor: pointer; }
[hidden] { display: none !important; }
:focus-visible { outline: 3px solid #17686d; outline-offset: 4px; }
.skip-link { position: fixed; left: 16px; top: -100px; z-index: 50; padding: 12px 20px; background: #fff; }
.skip-link:focus { top: 12px; }
.page-width { width: min(1240px, calc(100% - 48px)); margin-inline: auto; }
.gallery-intro { color: #fff; background: #242d27; border-bottom: 5px solid var(--gold); padding: 52px 0 46px; }
.eyebrow { margin: 0 0 8px; font-size: 12px; font-weight: 700; letter-spacing: .13em; text-transform: uppercase; }
.gallery-intro .eyebrow { color: var(--gold); }
h1 { margin: 0 0 14px; font-size: clamp(38px, 6vw, 64px); font-weight: 600; letter-spacing: -.035em; line-height: 1.1; }
.gallery-intro p { margin-bottom: 0; }
.intro-copy { font-size: clamp(18px, 2vw, 23px); }
.gallery-section { padding-block: 36px 60px; }
.gallery-toolbar { display: flex; flex-wrap: wrap; align-items: end; justify-content: space-between; gap: 16px; padding-bottom: 28px; border-bottom: 1px solid #cdd0c7; }
.album-select { width: min(100%, 460px); }
.album-select label { display: block; margin-bottom: 8px; font-size: 14px; font-weight: 700; }
select { width: 100%; min-height: 48px; padding: 10px 36px 10px 14px; color: var(--ink); background: #fff; border: 1px solid #6e776a; border-radius: 3px; }
.collection-total { margin: 0 0 10px; font-size: 14px; color: var(--muted); }
.album-heading { display: flex; align-items: start; justify-content: space-between; gap: 20px; margin-top: 30px; }
.album-heading h2 { margin: 0; font-size: clamp(26px, 3vw, 36px); font-weight: 600; line-height: 1.25; }
.album-heading .eyebrow { color: var(--muted); }
#album-description { max-width: 740px; margin: 12px 0 0; }
.photo-count { flex-shrink: 0; font-size: 14px; margin: 28px 0 0; }
.album-credit { padding: 12px 16px; border-left: 3px solid #8a7228; background: #eee9d9; font-size: 14px; }
.gallery-help { color: var(--muted); font-size: 14px; margin: 22px 0; }
#gallery-status:empty { display: none; }
.photo-grid { columns: 3; column-gap: 22px; }
.photo-card { display: inline-block; width: 100%; break-inside: avoid; margin: 0 0 22px; background: #fff; border: 1px solid #dedfd7; }
.photo-button { position: relative; display: block; width: 100%; padding: 0; border: 0; background: #e7e8e1; color: var(--ink); text-align: left; }
.photo-button img { display: block; width: 100%; height: auto; }
.photo-button:hover { outline: 3px solid #8a7228; outline-offset: -3px; }
.photo-button:focus-visible { outline-offset: 4px; }
.photo-fallback { display: block; padding: 40px 20px; }
.photo-card figcaption { display: flex; justify-content: space-between; flex-wrap: wrap; gap: 2px 12px; padding: 11px 14px; font-size: 12px; color: var(--muted); }
.photo-credit { font-weight: 600; }
.site-footer { padding: 28px 24px; text-align: center; background: #242d27; color: #fff; font-size: 14px; }
.site-footer p { margin-top: 0; }
dialog { padding: 0; border: 1px solid #777; border-radius: 4px; color: #fff; background: #171b18; width: min(1120px, calc(100% - 32px)); max-width: none; max-height: calc(100dvh - 32px); }
dialog::backdrop { background: rgba(0, 0, 0, .88); }
body.viewer-open { overflow: hidden; }
.viewer-shell { padding: 20px 24px; }
.viewer-header, .viewer-controls { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.viewer-header h2 { margin: 0; font-size: 17px; font-weight: 600; }
dialog button { min-height: 44px; padding: 8px 16px; border: 1px solid #a4afa6; border-radius: 3px; background: transparent; color: #fff; white-space: nowrap; }
dialog button:hover { background: #38443b; }
dialog :focus-visible { outline-color: #e4ce7f; }
.viewer-close { flex-shrink: 0; }
.viewer-close span { font-size: 22px; margin-left: 8px; }
.viewer-stage { min-height: 100px; margin-top: 16px; display: grid; place-items: center; background: #101411; }
.viewer-stage img { max-width: 100%; width: auto; height: auto; max-height: var(--viewer-height); object-fit: contain; }
#viewer-status { margin: 0; padding: 24px; text-align: center; }
#viewer-status:empty { display: none; }
.viewer-details { max-width: 860px; margin: 14px auto; text-align: center; font-size: 14px; }
.viewer-details p { margin: 4px 0; }
#viewer-credit { color: #e4ce7f; }
#viewer-credit:empty { display: none; }
#viewer-position { margin: 0; text-align: center; font-size: 14px; }
@media (min-width: 1500px) { .photo-grid { columns: 4; } }
@media (max-width: 900px) { .photo-grid { columns: 2; } }
@media (max-width: 560px) {
    .page-width { width: calc(100% - 32px); }
    .gallery-intro { padding: 32px 0; }
    .gallery-section { padding-top: 24px; }
    .gallery-toolbar { gap: 12px; }
    .collection-total { margin: 0; }
    .album-heading { display: block; }
    .photo-count { margin: 10px 0 0; }
    .photo-grid { columns: 1; }
    .viewer-shell { padding: 12px; }
    .viewer-header h2 { font-size: 14px; }
    dialog { width: calc(100% - 16px); max-height: calc(100dvh - 16px); }
    dialog button { padding: 8px 10px; }
    :root { --viewer-height: 50dvh; }
}

/* Crop away phone UI in both thumbnails and the viewer. Originals remain intact. */
.photo-crop { position: relative; display: block; overflow: hidden; aspect-ratio: var(--crop-ratio); }
#viewer-media { max-width: 100%; }
.viewer-stage .photo-crop { width: min(100%, calc(var(--crop-ratio) * var(--viewer-height))); }
.photo-crop img, .viewer-stage .photo-crop img {
    position: absolute; display: block; max-width: none; max-height: none;
    width: var(--crop-width); height: var(--crop-height);
    left: var(--crop-left); top: var(--crop-top); object-fit: fill;
}
