.villa-gallery-frame { position: relative; width: 100%; aspect-ratio: var(--gallery-ratio, 3 / 2); background: #e9e7df; }
.villa-gallery-track { display: flex; width: 100%; height: 100%; overflow-x: auto; overflow-y: hidden; scroll-snap-type: x mandatory; overscroll-behavior-x: contain; -webkit-overflow-scrolling: touch; scrollbar-width: thin; }
.gallery-ready .villa-gallery-track { scrollbar-width: none; }
.gallery-ready .villa-gallery-track::-webkit-scrollbar { display: none; }
.villa-gallery-slide { flex: 0 0 100%; width: 100%; min-width: 0; height: 100%; scroll-snap-align: start; scroll-snap-stop: always; }
.editorial-guide .villa-gallery-slide img { width: 100%; height: 100%; object-fit: cover; user-select: none; -webkit-user-drag: none; }
.villa-gallery-controls { display: none; justify-content: center; align-items: center; gap: 4px; height: 44px; }
.gallery-ready .villa-gallery-controls { display: flex; }
.villa-gallery-arrow, .villa-gallery-dot { appearance: none; -webkit-appearance: none; border: 0; background: transparent; color: #16231d; cursor: pointer; padding: 0; display: inline-flex; align-items: center; justify-content: center; flex: 0 0 auto; }
.villa-gallery-arrow { width: 44px; height: 44px; }
.villa-gallery-arrow svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 1.5; }
.villa-gallery-arrow:disabled { opacity: .25; cursor: default; }
.villa-gallery-dots { display: flex; align-items: center; }
.villa-gallery-dot { width: 28px; height: 44px; }
.villa-gallery-dot::before { content: ''; width: 6px; height: 6px; border-radius: 50%; background: #aaa99f; transition: background-color .15s ease, transform .15s ease; }
.villa-gallery-dot[aria-current="true"]::before { background: #16231d; transform: scale(1.15); }
.villa-gallery-arrow:focus-visible, .villa-gallery-dot:focus-visible, .villa-gallery-track:focus-visible { outline: 2px solid #536252; outline-offset: -3px; }
.editorial-guide .gallery-ready figcaption { margin-top: 0; }
.gallery-status { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
@media(prefers-reduced-motion: reduce){.villa-gallery-dot::before{transition:none;}}
@media print{.villa-gallery-controls{display:none!important;}.villa-gallery-track{overflow:hidden;}}
