.photo .visual{background:#d8ded1;isolation:isolate}
.photo .visual .ff-slide-image{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:50% 38%;opacity:0;transition:opacity .85s ease;z-index:0}
.photo .visual .ff-slide-image.is-active{opacity:1}
.photo .visual:before{content:'';position:absolute;inset:0;background:linear-gradient(180deg,#0002,transparent 35%,#0003);z-index:1;pointer-events:none}
.photo .visual:after{z-index:2;pointer-events:none}
.photo .visual>span.ff-slide-copy{position:absolute;bottom:21px;left:20px;right:45px;text-align:left;font-size:clamp(16px,1.7vw,24px);line-height:1.2;color:#fff;max-width:none;z-index:2;text-shadow:0 1px 14px #0009;opacity:0;transform:translateY(5px);transition:opacity .35s,transform .35s}
.photo:hover .visual>span.ff-slide-copy,.photo:focus-visible .visual>span.ff-slide-copy{opacity:1;transform:none}
.photo .visual b{z-index:2;text-shadow:0 2px 10px #0009}
.photo .visual .gallery-view{z-index:3}
.ff-slide-number{position:absolute;top:16px;left:16px;z-index:2;background:#14201980;padding:6px 8px;color:white;font-size:9px;font-weight:500;letter-spacing:1.5px;font-style:normal}
.ff-slideshow-bar{display:flex;justify-content:space-between;align-items:center;gap:20px;flex-wrap:wrap;margin:0 0 20px}
.ff-slideshow-bar p{font-size:12px;color:var(--muted);margin:0}
.ff-slide-toggle{border:0;background:none;color:var(--ink);padding:7px 0;font-size:10px;letter-spacing:1.3px;text-transform:uppercase;border-bottom:1px solid #b8c3af;cursor:pointer}
.ff-slide-toggle:focus-visible,.ff-shoot-gallery button:focus-visible{outline:2px solid #9fb58f;outline-offset:5px}
.ff-shoot-gallery{position:fixed;inset:0;width:min(548px,calc(100vw - 12px));max-width:calc(100vw - 12px);max-height:92dvh;padding:0;border:0;border-radius:26px;background:rgba(16,26,19,.6);backdrop-filter:blur(18px);color:#f5f4eb;overflow:auto;box-shadow:0 22px 75px #0005}
.ff-shoot-gallery::backdrop{background:rgba(7,17,11,.55);backdrop-filter:blur(5px)}
.ff-shoot-gallery:not([open]){display:none}
.ff-shoot-head{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:9px 18px;border-bottom:0}
.ff-shoot-head h2{font:italic clamp(24px,2.2vw,30px) 'Playfair Display',serif;letter-spacing:-.5px;line-height:1.1;margin:0;color:inherit}
.ff-shoot-close{display:grid;place-items:center;width:44px;height:44px;flex:none;background:#ffffff12;border:0;border-radius:50%;color:inherit;font-size:25px;cursor:pointer;padding:0}
.ff-shoot-frame{position:relative;display:block;width:min(448px,51dvh,calc(100% - 12px));height:auto;min-height:0;aspect-ratio:4/5;margin:0 auto;background:#090e0b;border-radius:16px;overflow:hidden}
.ff-shoot-frame img{position:absolute;inset:0;width:100%;height:100%;min-width:0;min-height:0;max-height:none;object-fit:cover;object-position:50% 38%;display:block;animation:ffShootImage .35s ease}
@keyframes ffShootImage{from{opacity:.35}to{opacity:1}}
.ff-shoot-arrow{position:absolute;top:50%;transform:translateY(-50%);width:44px;height:44px;border:1px solid #ffffff40;border-radius:50%;color:white;background:rgba(14,25,17,.42);backdrop-filter:blur(6px);cursor:pointer;font-size:23px;z-index:2}
.ff-shoot-arrow.prev{left:8px}.ff-shoot-arrow.next{right:8px}
.ff-shoot-caption{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:4px 18px;border-top:0}
.ff-shoot-caption span{font-size:10px;letter-spacing:2px;color:#c4d0bb}
.ff-shoot-caption button{color:#e0e8d5;border-color:#718365;min-height:44px}
.ff-shoot-footer{display:flex;flex-direction:column;align-items:center;gap:8px;padding:0 18px 12px;text-align:center}
.ff-shoot-footer p{font-size:11px;color:#c2ceb9;line-height:1.7;margin:0}
.ff-shoot-footer .btn{border-radius:999px;background:#e1e9d7;color:#243120;max-width:100%;min-height:44px;padding:12px 20px;white-space:normal;text-align:center;font-size:10px}
@media(max-width:700px){.photo .visual>span.ff-slide-copy{display:none}.ff-slide-number{top:10px;left:10px;font-size:8px}.ff-slideshow-bar p{max-width:240px}}
@media(prefers-reduced-motion:reduce){.photo .visual .ff-slide-image{transition:none}.ff-shoot-frame img{animation:none}}
