.gal{gap:var(--gal-gap,.7rem);max-width:var(--gal-max,560px);min-width:0;display:grid;position:relative}.gal .sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.gal-frame{aspect-ratio:var(--gal-ratio,4/5);background:var(--gal-ground,#f4f1ec);border-radius:var(--gal-radius,0);overflow:hidden}.gal-tall .gal-frame{aspect-ratio:4/5}.gal-square .gal-frame{aspect-ratio:1}.gal-wide .gal-frame{aspect-ratio:4/3}.gal-row{scroll-snap-type:x mandatory;overscroll-behavior-x:contain;scrollbar-width:none;display:flex;overflow-x:auto}.gal-row::-webkit-scrollbar{display:none}.gal-row>*{scroll-snap-align:start;scroll-snap-stop:always;flex:0 0 100%;width:100%;height:100%;margin:0;display:block}.gal-open{font:inherit;color:inherit;cursor:zoom-in;-webkit-tap-highlight-color:transparent;background:0 0;border:0;padding:0}.gal-open:focus-visible{outline:2px solid var(--gal-ink,#1a1a1a);outline-offset:-4px}.gal-row img{-o-object-fit:var(--gal-fit,cover);object-fit:var(--gal-fit,cover);width:100%;height:100%;padding:var(--gal-pad,0);box-sizing:border-box;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;display:block}.gal-over{z-index:2;position:absolute;top:8px;left:8px}.gal-dots{justify-content:center;gap:6px;display:none}.gal-dots span{background:var(--gal-line,#d9d4cc);border-radius:50%;width:6px;height:6px}.gal-dots span.on{background:var(--gal-ink,#1a1a1a)}.gal-count{text-align:center;font-variant-numeric:tabular-nums;margin:0;display:none}.gal-thumbs{gap:.5rem;display:flex;overflow-x:auto}.gal-thumbs button{width:var(--gal-thumb,56px);height:var(--gal-thumb,56px);border:1px solid var(--gal-line,#d9d4cc);background:var(--gal-ground,#f4f1ec);cursor:pointer;flex:none;min-width:44px;min-height:44px;padding:0;overflow:hidden}.gal-thumbs button[aria-pressed=true]{border-color:var(--gal-ink,#1a1a1a);box-shadow:inset 0 0 0 1px var(--gal-ink,#1a1a1a)}.gal-thumbs img{-o-object-fit:var(--gal-fit,cover);object-fit:var(--gal-fit,cover);width:100%;height:100%}@media (max-width:820px){.gal{max-width:none}.gal-dots{display:flex}.gal-count{display:block}}@media (prefers-reduced-motion:no-preference){.gal-swap{animation:.32s cubic-bezier(.2,.8,.2,1) gal-swap}}@keyframes gal-swap{0%{opacity:0;transform:translateY(6px)scale(.985)}to{opacity:1;transform:none}}
