/* The viewer keeps every image uncropped and gives mobile controls their own safe area. */
.image-gallery{box-sizing:border-box;position:fixed;inset:0;width:100%;height:100%;height:100dvh;max-width:none;max-height:none;margin:0;padding:0;border:0;background:#0b0912;color:#f4efff;overflow:hidden;color-scheme:dark}
.image-gallery[open]{display:grid;grid-template-rows:auto minmax(0,1fr) auto}
.image-gallery::backdrop{background:rgba(4,3,8,.94)}
.image-gallery *, .image-gallery *::before,.image-gallery *::after{box-sizing:border-box}
.image-gallery__bar,.image-gallery__footer{display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:1rem clamp(1rem,3vw,3rem);flex-shrink:0}
.image-gallery__bar{padding-top:max(.65rem,env(safe-area-inset-top));border-bottom:1px solid #352b45}
.image-gallery__footer{padding-bottom:max(.8rem,env(safe-area-inset-bottom));border-top:1px solid #352b45}
.image-gallery__tools,.image-gallery__navigation{display:flex;align-items:center;gap:.5rem;flex-shrink:0}
.image-gallery__count{color:#d8c9ee;font-size:.8rem;font-variant-numeric:tabular-nums;letter-spacing:.035em}
.image-gallery .gallery-button{width:48px;height:48px;min-width:48px;padding:12px;display:grid;place-items:center;border:1px solid #57416d;border-radius:50%;background:#191221;color:#f4efff;cursor:pointer;transition:background-color .18s,border-color .18s,transform .18s}
.image-gallery .gallery-button svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.image-gallery .gallery-button:disabled{opacity:.35;cursor:default}
.image-gallery__figure{display:grid;grid-template-rows:minmax(0,1fr) auto;min-height:0;margin:0}
.image-gallery__canvas{position:relative;min-height:0;margin:0 clamp(.5rem,2vw,2rem);overflow:hidden}
.image-gallery__stage{width:100%;height:100%;display:grid;place-items:center}
.image-gallery .image-gallery__image{width:100%;height:100%;max-width:100%;max-height:100%;min-height:0;object-fit:contain;display:block;border:0;border-radius:0;transform:none;opacity:1}
.image-gallery[data-state="ready"] .image-gallery__image{animation:gallery-image-arrive .25s cubic-bezier(.16,1,.3,1) both}
.image-gallery[data-state="error"] .image-gallery__image{visibility:hidden}
.image-gallery__feedback{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:.8rem;padding:1.5rem;pointer-events:none;text-align:center}
.image-gallery__status{color:#e9dcff;font-size:.95rem;max-width:36ch;margin:0;background:#0b0912}
.image-gallery__status:empty{display:none}
.image-gallery__retry{pointer-events:auto;padding:.75rem 1.3rem;border:1px solid #a879dc;background:#30203f;color:#fff;border-radius:2px;font:inherit;cursor:pointer;min-height:44px}
.image-gallery__caption{padding:.85rem clamp(1rem,3vw,3rem) 1rem;max-height:30vh;overflow:auto;scrollbar-color:#8760ac #17101f;scrollbar-width:thin}
.image-gallery__kind{font-size:.75rem;color:#c5a5e5;letter-spacing:.025em;margin:0 0 .35rem}
.image-gallery .image-gallery__title{font-size:clamp(1.2rem,2.4vw,2rem);line-height:1.15;letter-spacing:-.025em;font-weight:500;color:#fff;max-width:45ch;margin:0;text-wrap:balance}
.image-gallery__description{font-size:.88rem;line-height:1.5;color:#d6c8e5;max-width:75ch;margin:.5rem 0 0}
.image-gallery__original{color:#dec0ff;font-size:.85rem;text-decoration:underline;text-underline-offset:4px;display:inline-flex;align-items:center;min-height:44px;min-width:0;max-width:30ch;overflow-wrap:anywhere}
.image-gallery :focus-visible{outline:2px solid #d7acff;outline-offset:4px}
.image-gallery [hidden]{display:none!important}
.image-gallery ::selection{background:#714496;color:#fff}
.image-gallery:fullscreen{width:100vw;height:100vh;max-width:none;max-height:none}
@keyframes gallery-image-arrive{from{opacity:.5;transform:scale(.995)}to{opacity:1;transform:scale(1)}}
@media(hover:hover) and (pointer:fine){.image-gallery .gallery-button:not(:disabled):hover{background:#352146;border-color:#c18af2;transform:translateY(-1px)}.image-gallery__original:hover{color:#fff}.image-gallery__retry:hover{background:#492f5e}}
@media(max-width:600px){.image-gallery__bar,.image-gallery__footer{gap:.5rem;padding-left:max(1rem,env(safe-area-inset-left));padding-right:max(1rem,env(safe-area-inset-right))}.image-gallery__caption{padding:.65rem 1rem .8rem;max-height:29vh}.image-gallery__description{font-size:.8rem;line-height:1.45}.image-gallery__kind{font-size:.7rem}.image-gallery__canvas{margin:0}.image-gallery__original{max-width:20ch}}
@media(max-height:500px) and (orientation:landscape){.image-gallery__bar,.image-gallery__footer{padding-top:.25rem;padding-bottom:.25rem}.image-gallery__caption{padding:.4rem 1rem;max-height:24vh}.image-gallery__description{display:none}.image-gallery__kind{margin-bottom:.15rem}.image-gallery .image-gallery__title{font-size:1rem}.image-gallery .gallery-button{width:44px;height:44px;min-width:44px}}
@media(prefers-reduced-motion:reduce){.image-gallery .image-gallery__image{animation:none!important}.image-gallery .gallery-button{transition:none;transform:none!important}}
.image-gallery[data-paused="true"] .image-gallery__image{animation:none!important}
.photo-treatment{display:flex;flex-wrap:wrap;align-items:center;gap:.3rem 1rem;margin-top:.45rem;color:#d7c7e8;font-size:11px;line-height:1.5;letter-spacing:.01em}
.photo-treatment a{display:inline-flex;align-items:center;min-height:44px;color:inherit;text-decoration:underline;text-underline-offset:3px}
.photo-treatment a:focus-visible{outline:2px solid #d7acff;outline-offset:3px}
.service-visual--enhanced>.image-link{display:block;width:100%;height:100%}
.service-visual--enhanced>figcaption{position:absolute;left:8px;bottom:8px;z-index:1;padding:4px 8px;background:#10091ee8;pointer-events:none}
.service-visual--enhanced .photo-treatment{margin:0}
