.gallery-carousel-block { position: relative; overflow: hidden; width: 100%; }
.gallery-carousel-track { display: flex; transition: transform 0.4s cubic-bezier(.4,0,.2,1); cursor: grab; height: 100%; touch-action: pan-y; }
.gallery-carousel-track.dragging { transition: none; cursor: grabbing; }
.gallery-carousel-slide { flex: 0 0 auto; user-select: none; height: 100%; display: flex; align-items: center; justify-content: center; box-sizing: border-box; overflow: hidden; }
.gallery-carousel-img { display: block; width: 100%; height: 100%; object-fit: cover; }
.gallery-carousel-block[data-spacing="1"] .gallery-carousel-slide { margin: 0 8px; }
.gallery-carousel-arrow { position: absolute; top: 50%; transform: translateY(-50%); background: rgba(255,255,255,0.85); border: none; font-size: 1.8rem; font-weight: 300; cursor: pointer; z-index: 2; border-radius: 50%; width: 44px; height: 44px; display: flex; align-items: center; justify-content: center; box-shadow: 0 2px 8px rgba(0,0,0,0.12); line-height: 1; padding: 0; color: #333; transition: background .2s, transform .2s; }
.gallery-carousel-arrow:hover { background: #fff; transform: translateY(-50%) scale(1.08); }
.gallery-carousel-arrow--prev { left: 10px; }
.gallery-carousel-arrow--next { right: 10px; }
.gallery-carousel-dots { display: flex; justify-content: center; align-items: center; flex-wrap: nowrap; padding: 12px 0; position: absolute; bottom: 10px; left: 0; right: 0; z-index: 2; }
.gallery-carousel-dots button { background: rgba(255,255,255,0.6); border: none; border-radius: 50%; width: 24px; height: 24px; margin: 0 6px; cursor: pointer; padding: 0; flex-shrink: 0; transition: width .2s, height .2s, background .2s; }
.gallery-carousel-dots .active { background: #fff; }
@media (max-width: 600px) { .gallery-carousel-dots button { width: 15px; height: 15px; margin: 0 3px; } }
.gallery-carousel-modal { position: fixed; z-index: 9999; left: 0; top: 0; width: 100vw; height: 100vh; background: rgba(0,0,0,0.85); padding: 1rem; }
.gallery-carousel-modal-img { position: absolute; top: 50vh; top: 50svh; left: 50%; transform: translate(-50%, -50%); max-width: 90vw; max-height: 75vh; max-height: 75svh; border-radius: 8px; cursor: grab; user-select: none; object-fit: contain; z-index: 1; }
.gallery-carousel-modal-close { position: absolute; top: 20px; right: 40px; color: #fff; font-size: 2.5rem; cursor: pointer; z-index: 2; }
.gallery-carousel-modal-arrow { background: none; border: none; color: #fff; font-size: 3rem; font-weight: 300; cursor: pointer; position: absolute; top: 50vh; top: 50svh; transform: translateY(-50%); opacity: 0.7; transition: opacity .2s; padding: 0.5rem; z-index: 2; }
.gallery-carousel-modal-arrow:hover { opacity: 1; }
.gallery-carousel-modal-arrow--prev { left: 12px; }
.gallery-carousel-modal-arrow--next { right: 12px; }
@media (min-width: 768px) { .gallery-carousel-modal-arrow--prev { left: 40px; } .gallery-carousel-modal-arrow--next { right: 40px; } }
.gallery-carousel-modal-caption { position: absolute; bottom: 3vh; bottom: 3svh; left: 0; right: 0; color: #fff; text-align: center; z-index: 1; }