.card-gallery{position:relative;height:235px;isolation:isolate;background:#dce5dc;overflow:hidden}
.card-photo-track{display:flex;width:100%;height:100%;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;scrollbar-width:none;overscroll-behavior-x:contain;touch-action:pan-x pan-y;outline-offset:-4px}
.card-photo-track::-webkit-scrollbar{display:none}
.card-photo-slide{flex:0 0 100%;height:100%;min-width:0;scroll-snap-align:start;scroll-snap-stop:always}
.card-photo-slide img{display:block;width:100%;height:100%;object-fit:cover;user-select:none}
.card-gallery:after{content:'';position:absolute;inset:45% 0 0;background:linear-gradient(transparent,#062d27b5);pointer-events:none}
.card-gallery .gallery-type{position:absolute;top:16px;left:16px;z-index:2}
.gallery-arrow{position:absolute;top:43%;width:40px;height:40px;border:1px solid #ffffffa8;border-radius:50%;background:#fffef3ed;color:#123e34;display:grid;place-items:center;font:28px/1 Arial;cursor:pointer;z-index:3;box-shadow:0 2px 8px #0002}
.gallery-prev{left:12px}.gallery-next{right:12px}.gallery-arrow:hover{background:#fff}.gallery-arrow:focus-visible,.gallery-dots button:focus-visible{outline:3px solid #9fe3bc;outline-offset:2px}
.gallery-bottom{position:absolute;bottom:34px;left:18px;right:18px;color:#fff;display:flex;justify-content:space-between;align-items:center;gap:12px;z-index:2;font-size:12px;pointer-events:none}.gallery-count{white-space:nowrap;background:#0c322c9c;border-radius:20px;padding:4px 9px;font-size:11px}
.gallery-dots{position:absolute;bottom:2px;left:50%;transform:translateX(-50%);display:flex;z-index:3}.gallery-dots button{width:32px;height:30px;border:0;background:transparent;display:grid;place-items:center;cursor:pointer;padding:0}.gallery-dots span{width:6px;height:6px;border:1px solid white;background:#ffffff55;border-radius:50%}.gallery-dots [aria-pressed=true] span{width:17px;border-radius:4px;background:white}
@media(max-width:760px){.card-gallery{height:210px}.gallery-arrow{width:36px;height:36px}.gallery-bottom{font-size:12px}}
@media(prefers-reduced-motion:reduce){.card-photo-track{scroll-behavior:auto}}
/* Quiet controls reveal when needed; the one-time photo nudge suggests a swipe. */
.gallery-arrow{opacity:0;transform:translateY(4px) scale(.94);pointer-events:none;background:#fffffff0;backdrop-filter:blur(12px);transition:opacity .22s ease,transform .32s cubic-bezier(.22,1,.36,1),background .2s,box-shadow .2s}
.card-gallery:hover .gallery-arrow,.card-gallery:focus-within .gallery-arrow{opacity:1;transform:translateY(0) scale(1);pointer-events:auto}
.gallery-arrow:hover{box-shadow:0 5px 18px #082b2230;background:#fff}
.gallery-arrow:active{transform:scale(.93)}
.gallery-dots span{transition:width .3s cubic-bezier(.22,1,.36,1),background .25s,opacity .25s}
.card-photo-slide img{transition:transform .65s cubic-bezier(.22,1,.36,1)}
.swipe-invitation .card-photo-slide:first-child img{animation:gallery-swipe-hint 1.3s cubic-bezier(.22,1,.36,1) .35s both}
@keyframes gallery-swipe-hint{0%,100%{transform:scale(1.025) translateX(0)}45%{transform:scale(1.025) translateX(-6px)}70%{transform:scale(1.025) translateX(1px)}}
@media(hover:none){.card-gallery:hover .gallery-arrow{opacity:0;pointer-events:none}.card-gallery:focus-within .gallery-arrow{opacity:1;pointer-events:auto}}
@media(prefers-reduced-motion:reduce){.gallery-arrow,.gallery-dots span,.card-photo-slide img{transition:none}.swipe-invitation .card-photo-slide:first-child img{animation:none}}
