.geo-gallery { display:grid; grid-template-columns:repeat(auto-fill,minmax(150px,1fr)); gap:12px; margin:1.25rem 0; }
.geo-gallery__item { display:block; overflow:hidden; border-radius:12px; background:#edf2f6; }
.geo-gallery__item img { display:block; width:100%; height:160px; object-fit:cover; transition:transform .2s; }
.geo-gallery__item:hover img { transform:scale(1.04); }
.geo-gallery__item:focus-visible { outline:3px solid #247ab7; outline-offset:3px; }
.geo-lightbox { width:100vw; height:100dvh; max-width:none; max-height:none; margin:0; padding:0; border:0; background:#111820; color:white; }
.geo-lightbox::backdrop { background:rgba(0,0,0,.9); }
.geo-lightbox__layout { height:100%; display:grid; grid-template-rows:auto minmax(0,1fr) auto; padding:16px; padding-top:max(16px,env(safe-area-inset-top)); padding-bottom:max(16px,env(safe-area-inset-bottom)); gap:12px; }
.geo-lightbox__bar { display:flex; align-items:center; justify-content:space-between; gap:12px; }
.geo-lightbox button { min-width:48px; min-height:48px; border:1px solid #ffffff55; border-radius:10px; color:white; background:#ffffff14; font:inherit; cursor:pointer; }
.geo-lightbox button:hover { background:#ffffff30; }
.geo-lightbox button:focus-visible { outline:3px solid #92d2ff; outline-offset:3px; }
.geo-lightbox button:disabled { opacity:.3; cursor:default; }
.geo-lightbox__stage { display:flex; align-items:center; justify-content:center; min-height:0; position:relative; }
.geo-lightbox__image { display:block; max-width:100%; max-height:100%; object-fit:contain; }
.geo-lightbox__image[hidden] { display:none; }
.geo-lightbox__status { position:absolute; text-align:center; }
.geo-lightbox__caption { margin:0; text-align:center; overflow-wrap:anywhere; }
.geo-lightbox__controls { display:flex; gap:12px; }
@media(max-width:480px) { .geo-gallery { grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; } .geo-gallery__item img { height:130px; } .geo-lightbox__layout { padding-inline:10px; } }
@media(prefers-reduced-motion:reduce) { .geo-gallery__item img { transition:none; } }
