.gallery-hero{background:linear-gradient(120deg,#001b43,#002d6f);color:#fff;border-bottom:6px solid #ba0000}.gallery-hero h1{font:700 clamp(2.5rem,6vw,4.5rem)/1 Georgia,serif;margin:.8rem 0}.gallery-hero p{color:#dce6f6;font-size:1.1rem}.gallery-hero .breadcrumb-item,.gallery-hero .breadcrumb-item.active,.gallery-hero .breadcrumb-item:before{color:#becbe0}.gallery-hero .breadcrumb a{color:#fff}.album-card{background:#fff;border:1px solid #dce2ec;transition:.25s}.album-card:hover{transform:translateY(-6px);box-shadow:0 20px 44px rgba(0,45,111,.14)}.album-card>a{text-decoration:none;color:#14213a}.album-cover{position:relative;aspect-ratio:4/3;overflow:hidden;background:#e9edf4}.album-cover img{width:100%;height:100%;object-fit:cover;transition:.4s}.album-card:hover .album-cover img{transform:scale(1.04)}.album-count{position:absolute;right:1rem;bottom:1rem;background:#ba0000;color:#fff;padding:.45rem .7rem;font-weight:800;font-size:.8rem}.album-body{padding:1.4rem}.album-body small{color:#ba0000;font-weight:800;text-transform:uppercase;letter-spacing:.12em}.album-body h2{font:700 1.55rem Georgia,serif;margin:.65rem 0 1.1rem}.album-body>span{color:#002d6f;font-weight:800}.gallery-photo{position:relative;display:block;width:100%;border:0;padding:0;background:#001b43;aspect-ratio:1/1;overflow:hidden}.gallery-photo img{width:100%;height:100%;object-fit:cover;transition:.3s}.gallery-photo span{position:absolute;inset:0;display:grid;place-items:center;background:rgba(0,27,67,.55);color:#fff;font-size:1.6rem;opacity:0;transition:.25s}.gallery-photo:hover span,.gallery-photo:focus span{opacity:1}.gallery-photo:hover img{transform:scale(1.04)}.empty-gallery{padding:5rem 1rem;border:2px dashed #cbd5e5;background:#f5f7fb}.empty-gallery i{font-size:3rem;color:#002d6f}.empty-gallery h2{font:700 2rem Georgia,serif;margin-top:1rem}.btn-outline-primary{--bs-btn-color:#002d6f;--bs-btn-border-color:#002d6f;--bs-btn-hover-bg:#002d6f;--bs-btn-hover-border-color:#002d6f}
.year-group{padding-bottom:4rem;margin-bottom:4rem;border-bottom:1px solid #dce2ec}.year-group:last-child{border-bottom:0;margin-bottom:0}.year-heading{margin-bottom:1.75rem}.year-heading>span{font:700 2.4rem Georgia,serif;color:#002d6f}.year-heading>div{height:2px;background:#d6ad61;flex:1}.year-heading>small{font-weight:800;color:#6b7482;text-transform:uppercase;letter-spacing:.08em}
.year-card .album-cover{aspect-ratio:16/10}.year-badge{position:absolute;inset:auto auto 1rem 1rem;background:#002d6f;color:#fff;border-bottom:4px solid #ba0000;padding:.6rem 1rem;font:700 1.5rem Georgia,serif}.album-body p{color:#697586;margin-top:-.35rem}.album-cover-placeholder{background:#f4f7fc}.album-cover-placeholder img{object-fit:contain;padding:2.5rem;opacity:.88}
.album-card{background: #002967!important;} .album-body h2 {color: #becbe0;}

.gallery-hero .album-page-title {
  font-size: clamp(1.5rem, 3.5vw, 3rem);
  line-height: 1.15;
  white-space: nowrap;
}

.gallery-hero > .container > p:last-child { margin-bottom: 0; }

body.gallery-page { background: #000; }
.gallery-content { padding-top: 1.5rem; background: #000; color: #fff; }
.gallery-content .text-secondary { color: #becbe0 !important; }
.gallery-content .btn-outline-primary {
  --bs-btn-color: #becbe0;
  --bs-btn-border-color: #becbe0;
  --bs-btn-hover-color: #fff;
}
.gallery-content .empty-gallery { background: #111; border-color: #444; }
.gallery-content .empty-gallery i { color: #becbe0; }
.album-body h2 { font-family: 'Inter', system-ui, sans-serif; font-size: 1.5rem; white-space: nowrap; }

/* Keep the enlarged photo and close control inside the visible viewport. */
#photoModal .modal-content {
  height: calc(100vh - 2 * var(--bs-modal-margin, .5rem));
  height: calc(100dvh - 2 * var(--bs-modal-margin, .5rem));
  overflow: hidden;
}
#photoModal .modal-header { flex-shrink: 0; gap: 1rem; }
#photoModal .modal-title {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
#photoModal .btn-close { flex-shrink: 0; }
#photoModal .modal-body { min-height: 0; display: flex; }
#modalPhoto {
  display: block;
  width: 100%;
  height: 100%;
  min-height: 0;
  object-fit: contain;
}
