/* One frame contract for the editor and the published galleries. */
.bureau-frame{position:relative;aspect-ratio:4/5;overflow:hidden}
.bureau-frame>img{display:block;width:100%;height:100%;object-fit:cover;object-position:var(--crop-x,50%) var(--crop-y,50%);transform-origin:var(--crop-x,50%) var(--crop-y,50%);transform:scale(var(--crop-zoom,1));transition:none}
.masonry-item.bureau-frame:hover>img{transform:scale(var(--crop-zoom,1))}
#editor-grid .image-wrap.bureau-frame{aspect-ratio:4/5}
#editor-grid .bureau-frame .slot-empty{height:100%;aspect-ratio:auto}
.crop-layout{display:grid;grid-template-columns:minmax(0,360px) minmax(0,1fr);gap:26px;margin-top:22px;align-items:start}
.crop-stage{width:100%;cursor:grab;touch-action:none;border-radius:8px;background:#17212a;user-select:none}
.crop-stage.dragging{cursor:grabbing}.crop-stage>img{pointer-events:none}
.crop-controls{display:grid;gap:22px}.crop-controls input{width:100%;accent-color:var(--accent)}
.crop-controls output{color:var(--muted);font-variant-numeric:tabular-nums}.frame-note{margin-bottom:18px}
#editor-grid .crop-button{width:100%;margin-bottom:14px}
#editor-grid .actions{gap:6px;justify-content:flex-start}
@media(max-width:600px){.crop-layout{grid-template-columns:1fr}.crop-stage{max-width:260px;margin:auto}.crop-controls{gap:16px}}

/* All content thumbnails share the published 4:5 frame, including portfolio and picker. */
.image-wrap,.dialog-body .image-wrap{aspect-ratio:4/5}
.cover-preview{display:block;width:100%;height:auto;aspect-ratio:4/5;object-fit:cover}
.media-card:hover .image-wrap img{transform:none}
