body.photo-library-page { background: #fff; }
body.photo-library-page .photo-library {
  width: min(100% - 48px, 1240px);
  margin: 0 auto;
  padding: 24px 0 64px;
  font-size: 16px;
  line-height: 1.6;
  color: #23324d;
}
body.photo-library-page .photo-library * { box-sizing: border-box; }
body.photo-library-page .photo-library__intro { display: grid; grid-template-columns:minmax(0,1fr) auto; align-items:end; column-gap:24px; row-gap:0; padding-bottom: 28px; border-bottom: 1px solid #dce4ee; }
body.photo-library-page .photo-library__intro-top { grid-column:1/-1; display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:8px 20px; }
body.photo-library-page .photo-library__eyebrow { display: block; color: #cf0631; text-transform: uppercase; letter-spacing: .15em; font-size: 12px; font-weight: 800; }
body.photo-library-page .photo-library__intro h1, body.photo-library-page .photo-detail h1 { margin: 13px 0 16px; font-size: clamp(32px, 3vw, 42px); line-height: 1.15; letter-spacing: -.035em; color: #102850; }
body.photo-library-page .photo-library__intro p { max-width: 680px; margin: 0; color: #536780; font-size: 16px; line-height: 1.65; }
body.photo-library-page .photo-library__intro .photo-library__press { margin:0 0 12px; color:#102850; font-size:16px; font-weight:600; line-height:1.5; }
body.photo-library-page .photo-library__basket { display: inline-flex; gap: 8px; align-items: center; flex: none; min-height: 44px; font-size: 14px; line-height: 1.25; white-space: nowrap; border: 1px solid #ced9e7; border-radius: 6px; padding: 9px 12px; color: #13294b; text-decoration: none; font-weight: 750; }
body.photo-library-page .photo-library__basket span { display: grid; place-items: center; min-width: 22px; height: 22px; padding: 0 5px; border-radius: 50%; background: #cf0631; color: white; font-size: 11px; }
body.photo-library-page .photo-library__basket:hover, body.photo-library-page .photo-library__topline a:hover { color: #cf0631; border-color: #cf0631; }
body.photo-library-page .photo-filters { display: grid; grid-template-columns: minmax(200px, 2fr) minmax(155px, 1fr) minmax(160px, 1fr) auto auto; gap: 14px; align-items: end; padding: 30px 0; }
body.photo-library-page .photo-filters label { display: grid; gap: 8px; min-width: 0; color: #52657f; font-size: 13px; font-weight: 750; }
body.photo-library-page .photo-filters input, body.photo-library-page .photo-filters select { width: 100%; min-width: 0; height: 46px; padding: 0 12px; border: 1px solid #cdd9e6; border-radius: 8px; background: #fff; color: #22334e; font: inherit; font-size: 15px; }
body.photo-library-page .photo-filters button, body.photo-library-page .photo-licence button { height: 46px; padding: 0 20px; border: 0; border-radius: 8px; background: #ce0732; color: white; font: inherit; font-size: 14px; font-weight: 750; cursor: pointer; }
body.photo-library-page .photo-filters button:hover, body.photo-library-page .photo-licence button:hover { background: #a70026; }
body.photo-library-page .photo-filters > a { align-self: center; color: #52657f; font-size: 14px; }
body.photo-library-page .photo-library__collection-heading { display: flex; justify-content: space-between; align-items: baseline; gap: 16px; padding: 18px 0 23px; }
body.photo-library-page .photo-library__collection-heading h2 { margin: 0; color: #102850; font-size: clamp(22px, 2vw, 26px); line-height: 1.3; letter-spacing: -.035em; }
body.photo-library-page .photo-library__collection-heading span { color: #65758d; font-size: 14px; }
body.photo-library-page .photo-mosaic { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); grid-auto-flow: dense; grid-auto-rows: 110px; gap: 14px; }
body.photo-library-page .photo-tile { grid-column: span 4; grid-row: span 3; min-width: 0; overflow: hidden; background: #eef2f6; }
body.photo-library-page .photo-tile--feature { grid-column: span 8; grid-row: span 4; }
body.photo-library-page .photo-tile--portrait { grid-column: span 4; grid-row: span 4; }
body.photo-library-page .photo-tile a { position: relative; display: block; width: 100%; height: 100%; color: #fff; text-decoration: none; }
body.photo-library-page .photo-tile img { display: block; width: 100%; height: 100%; object-fit: cover; transition: transform .35s ease; }
body.photo-library-page .photo-tile a:hover img { transform: scale(1.035); }
body.photo-library-page .photo-tile__caption { position: absolute; inset: auto 0 0; display: flex; justify-content: space-between; align-items: end; gap: 12px; padding: 54px 22px 20px; background: linear-gradient(transparent, rgba(4,17,38,.86)); }
body.photo-library-page .photo-tile__caption h3 { margin: 0 0 4px; color: #fff; font-size: 17px; line-height: 1.3; }
body.photo-library-page .photo-tile__caption span { color: #d6deea; font-size: 13px; }
body.photo-library-page .photo-tile__caption strong { flex: none; color: #fff; font-size: 14px; }
body.photo-library-page .photo-library__empty { margin: 28px 0 0; padding: 32px 24px; border: 1px solid #d9e3ed; border-radius: 18px; background: #f6f8fb; text-align: center; }
body.photo-library-page .photo-library__empty h2 { margin: 0 0 10px; color: #102850; font-size: 24px; line-height: 1.3; }
body.photo-library-page .photo-library__empty p { margin: 0 auto 18px; max-width: 600px; color: #586b83; font-size: 16px; line-height: 1.6; }
body.photo-library-page .photo-library__empty a { color: #c60730; font-weight: 750; }
body.photo-library-page .photo-library__topline { display: flex; justify-content: space-between; gap: 16px; padding-bottom: 26px; }
body.photo-library-page .photo-library__topline a { color: #4e6380; text-decoration: none; font-weight: 700; }
body.photo-library-page .photo-detail { display: grid; grid-template-columns: minmax(0, 1.55fr) minmax(350px, 1fr); gap: clamp(28px, 5vw, 76px); align-items: start; }
body.photo-library-page .photo-detail__image { display: grid; place-items: center; min-height: 490px; background: #eff3f7; }
body.photo-library-page .photo-detail__image img { display: block; max-width: 100%; max-height: 780px; width: auto; height: auto; }
body.photo-library-page .photo-detail h1 { font-size: clamp(30px, 2.8vw, 38px); }
body.photo-library-page .photo-detail__caption { color: #536780; font-size: 16px; line-height: 1.65; }
body.photo-library-page .photo-detail__facts { display: grid; gap: 0; margin: 24px 0; border-top: 1px solid #dce4ee; }
body.photo-library-page .photo-detail__facts div { display: flex; justify-content: space-between; gap: 18px; padding: 13px 0; border-bottom: 1px solid #dce4ee; }
body.photo-library-page .photo-detail__facts dt { color: #61728b; }body.photo-library-page .photo-detail__facts dd { margin: 0; text-align: right; font-weight: 700; }
body.photo-library-page .photo-detail__rights, body.photo-library-page .photo-detail__custom { color: #5a6b82; line-height: 1.55; }
body.photo-library-page .photo-detail__custom {
  margin:28px 0 0;
  padding:24px;
  border:1px solid #dce4ee;
  border-radius:10px;
  background:#f6f8fb;
}
body.photo-library-page .photo-detail__custom a { color:#102850; overflow-wrap:anywhere; text-underline-offset:3px; }
body.photo-library-page .photo-detail__information > h2 { margin: 30px 0 16px; color: #102850; font-size: 22px; }
body.photo-library-page .photo-licence { padding: 20px 0; border-top: 1px solid #dce4ee; }
body.photo-library-page .photo-licence__heading { display: flex; justify-content: space-between; gap: 15px; align-items: baseline; }
body.photo-library-page .photo-licence h3 { margin: 0; color: #152b4e; font-size: 19px; }body.photo-library-page .photo-licence__heading strong { color: #ce0732; font-size: 20px; }
body.photo-library-page .photo-licence p { color: #536780; line-height: 1.5; }
body.photo-library-page .photo-licence details { margin: 12px 0; color: #536780; font-size: 14px; line-height: 1.55; }
body.photo-library-page .photo-licence summary { color: #284669; cursor: pointer; font-weight: 700; }
body.photo-library-page .photo-licence button { margin-top: 8px; }
body.photo-library-page .photo-detail__error { color: #a40025; font-weight: 700; }
@media (max-width: 900px) {
  body.photo-library-page .photo-filters { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  body.photo-library-page .photo-filters > a { grid-column: span 2; }
  body.photo-library-page .photo-detail { grid-template-columns: 1fr; }
  body.photo-library-page .photo-tile, body.photo-library-page .photo-tile--portrait { grid-column: span 6; }
  body.photo-library-page .photo-tile--feature { grid-column: span 12; }
}
@media (max-width: 600px) {
  body.photo-library-page .photo-library { width: min(100% - 32px, 1460px); padding-top: 34px; }
  body.photo-library-page .photo-library__intro { display: block; padding-bottom: 28px; }
  body.photo-library-page .photo-library__basket { margin-top: 24px; }
  body.photo-library-page .photo-filters { grid-template-columns: 1fr; padding: 24px 0; }
  body.photo-library-page .photo-filters > a { grid-column: auto; }
  body.photo-library-page .photo-mosaic { grid-template-columns: 1fr; grid-auto-rows: auto; gap: 18px; }
  body.photo-library-page .photo-tile, body.photo-library-page .photo-tile--feature, body.photo-library-page .photo-tile--portrait { grid-column: 1; grid-row: auto; height: 280px; }
  body.photo-library-page .photo-detail__image { min-height: 260px; }
  body.photo-library-page .photo-library__collection-heading { align-items: center; }
}

/* Mobile gallery and licensing detail. */
@media(max-width:700px){
  body.photo-library-page .photo-library{width:calc(100% - 36px);padding:20px 0 28px}
  body.photo-library-page .photo-library__intro{display:block;padding-bottom:20px;border-bottom:1px solid #e5e9ef}
  body.photo-library-page .photo-library__eyebrow{font-size:.62rem;font-weight:500;letter-spacing:.05em;line-height:1.5}
  body.photo-library-page :is(.photo-library__intro h1,.photo-detail h1){margin:8px 0 12px;font-size:clamp(1.5rem,6.4vw,1.85rem);line-height:1.2;letter-spacing:-.025em;color:#102d63}
  body.photo-library-page .photo-library__intro p{font-size:.94rem;line-height:1.6}
  body.photo-library-page .photo-library__basket{margin-top:16px;min-height:44px;padding:8px 12px;border-radius:6px;font-size:.78rem;font-weight:500}
  body.photo-library-page .photo-filters{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;padding:20px 0}
  body.photo-library-page .photo-filters>label:first-of-type{grid-column:1/-1}
  body.photo-library-page .photo-filters label{font-size:.72rem;font-weight:500;gap:6px}
  body.photo-library-page .photo-filters :is(input,select){font-size:16px;height:46px;padding:0 10px;background:#f7f9fc;border-radius:6px}
  body.photo-library-page .photo-filters button{grid-column:1/-1;min-height:44px;border-radius:6px;background:#102d63;font-size:.8rem;font-weight:500}
  body.photo-library-page .photo-filters>a{grid-column:1/-1;display:inline-flex;align-items:center;min-height:44px;font-size:.78rem}
  body.photo-library-page .photo-library__collection-heading{align-items:center;padding:12px 0 18px;gap:12px}
  body.photo-library-page .photo-library__collection-heading h2{font-size:1.2rem;line-height:1.35}
  body.photo-library-page .photo-library__collection-heading>span{font-size:.7rem;text-align:right;flex:none}
  body.photo-library-page .photo-mosaic{grid-template-columns:minmax(0,1fr);grid-auto-rows:auto;gap:24px}
  body.photo-library-page :is(.photo-tile,.photo-tile--feature,.photo-tile--portrait){grid-column:1;grid-row:auto;height:auto;background:#fff;overflow:visible}
  body.photo-library-page .photo-tile a{height:auto;color:#102d63}
  body.photo-library-page .photo-tile img{height:auto;width:100%;aspect-ratio:auto;object-fit:contain;transform:none}
  body.photo-library-page .photo-tile__caption{position:static;padding:12px 0 0;align-items:start;gap:12px;background:none}
  body.photo-library-page .photo-tile__caption h3{color:#102d63;font-size:1rem;line-height:1.4}
  body.photo-library-page .photo-tile__caption span{color:#6b7b91;font-size:.72rem;line-height:1.5}
  body.photo-library-page .photo-tile__caption strong{color:#cf1737;font-size:.75rem;font-weight:500;line-height:1.8}
  body.photo-library-page .photo-library__empty{margin:24px 0 0;padding:20px 16px;border:0;border-left:3px solid #cf1737;border-radius:0;text-align:left;background:#f3f6fa}
  body.photo-library-page .photo-library__empty h2{font-size:1.2rem;line-height:1.35}
  body.photo-library-page .photo-library__empty p{font-size:.9rem;line-height:1.6;margin-bottom:12px}
  body.photo-library-page .photo-library__empty a{font-weight:500}
  body.photo-library-page .photo-library__topline{padding:0 0 18px;gap:12px}
  body.photo-library-page .photo-library__topline a{display:inline-flex;align-items:center;min-height:44px;font-size:.75rem;font-weight:500}
  body.photo-library-page .photo-detail{grid-template-columns:minmax(0,1fr);gap:20px}
  body.photo-library-page .photo-detail__image{min-height:0;background:#f3f6fa}
  body.photo-library-page .photo-detail__image img{width:100%;max-height:none}
  body.photo-library-page .photo-detail__caption{font-size:.94rem;line-height:1.6}
  body.photo-library-page .photo-detail__facts{margin:20px 0;font-size:.8rem}
  body.photo-library-page .photo-detail__facts div{padding:12px 0}
  body.photo-library-page .photo-detail__facts dd{font-weight:500;overflow-wrap:anywhere}
  body.photo-library-page :is(.photo-detail__rights,.photo-detail__custom,.photo-licence p){font-size:.9rem;line-height:1.65}
  body.photo-library-page .photo-detail__information>h2{margin:24px 0 12px;font-size:1.25rem}
  body.photo-library-page .photo-licence{padding:18px 0}
  body.photo-library-page .photo-licence h3{font-size:1rem;line-height:1.4}
  body.photo-library-page .photo-licence__heading strong{font-size:1.1rem;font-weight:500;white-space:nowrap}
  body.photo-library-page .photo-licence summary{min-height:44px;padding:10px 0;font-weight:500}
  body.photo-library-page .photo-licence button{width:100%;min-height:46px;border-radius:6px;font-size:.85rem;font-weight:500}
}

/* Simple, uniform four-column photo collection. */
body.photo-library-page .photo-mosaic {
  grid-template-columns:repeat(4,minmax(0,1fr));
  grid-auto-flow:row;
  grid-auto-rows:auto;
  gap:24px 16px;
}
body.photo-library-page .photo-mosaic > .photo-tile {
  position:relative;
  grid-column:auto;
  grid-row:auto;
  min-width:0;
  height:auto;
  overflow:visible;
  background:transparent;
}
body.photo-library-page .photo-tile__preview {
  position:relative;
  display:block;
  width:100%;
  height:auto;
  aspect-ratio:4/3;
  padding:0;
  border:0;
  border-radius:0;
  overflow:hidden;
  background:#eef2f6;
  cursor:zoom-in;
}
body.photo-library-page .photo-mosaic .photo-tile img {
  display:block;
  width:100%;
  height:100%;
  object-fit:cover;
  transform:none;
  transition:none;
}
body.photo-library-page .photo-tile__expand {
  position:absolute;
  right:8px;
  top:8px;
  display:grid;
  place-items:center;
  width:28px;
  height:28px;
  border-radius:4px;
  background:#102850db;
  color:#fff;
  font:400 18px/1 Manrope,sans-serif;
}
body.photo-library-page .photo-mosaic .photo-tile__caption {
  position:static;
  padding:10px 0 0;
  gap:8px;
  align-items:start;
  flex-wrap:wrap;
  background:none;
}
body.photo-library-page .photo-mosaic .photo-tile__caption > div { min-width:0; flex:1; }
body.photo-library-page .photo-mosaic .photo-tile__caption h3 {
  margin:0 0 4px;
  color:#102850;
  font-size:14px;
  font-weight:500;
  line-height:1.4;
  overflow-wrap:anywhere;
}
body.photo-library-page .photo-mosaic .photo-tile__caption h3 a {
  display:inline;
  width:auto;
  height:auto;
  color:#102850;
  text-decoration:none;
}
body.photo-library-page .photo-mosaic .photo-tile__caption h3 a:hover { text-decoration:underline; }
body.photo-library-page .photo-mosaic .photo-tile__caption span { color:#61728b; font-size:12px; }
body.photo-library-page .photo-mosaic .photo-tile__caption .photo-admin-only-label { display:block; margin-bottom:6px; color:#a40025; font-weight:600; }
body.photo-library-page .photo-mosaic .photo-tile__caption strong { color:#102850; font-size:12px; font-weight:500; line-height:1.6; }
body.photo-library-page .photo-tile__preview:focus-visible { outline:3px solid #355eaa; outline-offset:3px; }
body.photo-library-page .photo-tile__caption a:focus-visible { outline:3px solid #355eaa; outline-offset:3px; }
@media(max-width:1000px) {
  body.photo-library-page .photo-mosaic { grid-template-columns:repeat(3,minmax(0,1fr)); }
}
@media(max-width:700px) {
  body.photo-library-page .photo-mosaic { grid-template-columns:repeat(2,minmax(0,1fr)); gap:20px 12px; }
  body.photo-library-page .photo-mosaic .photo-tile__caption h3 { font-size:13px; }
}
@media(max-width:380px) {
  body.photo-library-page .photo-mosaic { grid-template-columns:minmax(0,1fr); }
}

/* Keep the single-photo view switch beside the basket, above the details. */
body.photo-library-page .photo-library__topline { align-items:center; flex-wrap:wrap; }
body.photo-library-page .photo-detail__top-actions { display:flex; align-items:center; justify-content:flex-end; flex-wrap:wrap; gap:12px 24px; margin-left:auto; }
body.photo-library-page .photo-detail__top-actions > a { white-space:nowrap; font-size:14px; }
body.photo-library-page .photo-detail__top-actions .photo-view-toolbar { margin:0; }
@media(max-width:600px) { body.photo-library-page .photo-detail__top-actions { gap:8px 16px; } body.photo-library-page .photo-detail__top-actions > a { font-size:12px; } }

body.photo-library-page .photo-preview-open { display:grid; place-items:center; width:100%; padding:0; border:0; background:transparent; cursor:zoom-in; color:#102850; font:600 13px/1.4 Manrope,sans-serif; }
.photo-preview-open span { padding:12px 16px; }
body.photo-library-page .photo-quick-view { position:absolute; top:8px; left:8px; z-index:2; min-height:40px; padding:8px 12px; border:1px solid #ffffff80; border-radius:6px; background:#102850db; color:#fff; font:600 12px/1.4 Manrope,sans-serif; cursor:pointer; }
body.photo-library-page .photo-mosaic .photo-admin-actions { top:56px; }
body .photo-preview-modal { width:min(1480px,calc(100% - 32px)); max-height:calc(100dvh - 32px); padding:20px; border:0; border-radius:12px; color:#23324d; background:#fff; overflow:auto; }
.photo-preview-modal::backdrop { background:#06132bd9; }
.photo-preview-modal header { display:flex; justify-content:space-between; align-items:start; gap:20px; margin-bottom:16px; }
body .photo-preview-modal h2 { margin:0 0 6px; font:750 20px/1.3 Manrope,sans-serif; color:#102850; }
.photo-preview-modal p { margin:0; color:#61728b; font:400 13px/1.5 Manrope,sans-serif; }
.photo-preview-modal img { display:block; width:auto; height:auto; max-width:100%; max-height:calc(100dvh - 200px); object-fit:contain; margin:auto; background:#f1f4f8; }
.photo-preview-modal button { min-height:44px; padding:8px 14px; border:1px solid #cdd9e6; border-radius:6px; background:#fff; color:#102850; font:600 14px/1.4 Manrope,sans-serif; cursor:pointer; }
.photo-preview-modal footer { display:flex; justify-content:flex-end; align-items:center; flex-wrap:wrap; gap:16px; margin-top:16px; }
.photo-preview-modal footer a { color:#102850; font:600 14px/1.4 Manrope,sans-serif; margin-right:auto; padding:10px 0; }
body.photo-library-page :is(.photo-preview-open,.photo-quick-view):focus-visible,.photo-preview-modal button:focus-visible { outline:3px solid #355eaa; outline-offset:3px; }
@media(max-width:600px) { body .photo-preview-modal { padding:14px; } body .photo-preview-modal h2 { font-size:17px; } .photo-preview-modal img { max-height:calc(100dvh - 220px); } body.photo-library-page .photo-quick-view { top:8px; left:8px; padding:6px 8px; font-size:11px; } }
