.cms-gallery-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 24px; }
.cms-gallery-photo { position: relative; aspect-ratio: 4 / 3; overflow: hidden; background: #eef0f2; }
.cms-gallery-photo > img, .cms-gallery-item img { width: 100%; height: 100%; object-fit: cover; }
.cms-gallery-placeholder { display: grid; height: 100%; place-items: center; color: #41484e; }
.cms-gallery-actions { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; gap: 12px; background: rgba(0, 0, 0, .55); opacity: 0; transition: opacity 200ms ease; }
.cms-gallery-photo:hover .cms-gallery-actions, .cms-gallery-photo:focus-within .cms-gallery-actions { opacity: 1; }
.cms-gallery-actions a { display: inline-flex; width: 50px; height: 50px; align-items: center; justify-content: center; border-radius: 50%; background: #f7f9fa; color: #102a43; font-size: 20px; }
.cms-gallery-actions a:hover { background: #fff; color: #17624f; }
.cms-gallery-actions a:focus-visible, .cms-gallery-item:focus-visible { outline: 3px solid #1dbbb3; outline-offset: 4px; }
.cms-gallery-title { margin: 14px 0 0; font-size: 18px; line-height: 1.4; overflow-wrap: anywhere; }
.cms-gallery-cover { display: block; width: 100%; max-height: 560px; object-fit: contain; }
.cms-gallery-description { overflow-wrap: anywhere; }
.cms-gallery-item { display: block; aspect-ratio: 4 / 3; }
@media (hover: none) { .cms-gallery-actions { opacity: 1; background: rgba(0, 0, 0, .25); } }
@media (max-width: 991.98px) { .cms-gallery-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 575.98px) { .cms-gallery-grid { grid-template-columns: minmax(0, 1fr); } }
@media (prefers-reduced-motion: reduce) { .cms-gallery-actions { transition: none; } }
