.zoom-controls{display:flex;align-items:center;flex-wrap:wrap;gap:8px;padding:10px 0;font-size:13px}
.zoom-controls button{background:#eef5ef;color:#275d48;border:1px solid #ceddd0;border-radius:7px;min-height:36px;padding:6px 12px;cursor:pointer;font:inherit}
.zoom-controls output{min-width:60px;text-align:center;font-variant-numeric:tabular-nums}
.zoom-controls small{opacity:.75}
.zoom-stage,.image-stage.zoom-stage{position:relative;display:flex;align-items:center;justify-content:center;overflow:hidden;height:65dvh;min-height:250px;max-height:none;background:#14251e;border-radius:12px;touch-action:none;cursor:grab;user-select:none}
.zoom-stage:active{cursor:grabbing}
.zoom-stage img,.image-stage.zoom-stage img{flex:none;max-width:none;max-height:none;object-fit:contain;pointer-events:none;transform-origin:center}
.zoom-stage:focus-visible{outline:3px solid #67b798;outline-offset:2px}
/* A dialog scale animation also scales the image despite its 100% label. */
.image-dialog[open]{animation:none}
