/* Explicit containing blocks prevent intrinsic image grid tracks from outgrowing the frame. */
.card-visual {position:relative;display:block;flex:none}
.empty-card-link {position:absolute;inset:0;display:grid;place-items:center}
.media-frame {position:relative;display:block;width:100%;height:100%;min-width:0;min-height:0;overflow:hidden;border-radius:inherit}
.media-frame .frame-link {position:absolute;inset:0;display:block;height:100%}
.media-frame[data-media-frame] img {position:absolute;inset:0;display:block;width:100%;height:100%;min-height:0;max-height:none;max-width:none;aspect-ratio:auto;
 object-fit:var(--frame-desktop-fit,cover);object-position:var(--frame-desktop-x,50%) var(--frame-desktop-y,50%);
 transform:scale(var(--frame-desktop-zoom,1));transform-origin:var(--frame-desktop-x,50%) var(--frame-desktop-y,50%);transition:none}
.organism-card:hover .media-frame img {transform:scale(var(--frame-desktop-zoom,1))}
.card-visual>.media-frame {position:absolute;inset:0}
.taxon-cover-frame {aspect-ratio:1.55;max-height:245px;border-radius:10px;overflow:hidden}
.frame-edit {position:absolute;top:9px;right:9px;z-index:3;width:44px;height:44px;border-radius:50%;border:1px solid #ffffff80;background:#12382ee8;color:white;font-size:1.4rem;display:grid;place-items:center}
.gallery-stage .frame-edit {right:60px}
.frame-crop-note {position:absolute;bottom:4px;left:5px;pointer-events:none;font:10px/1.3 var(--ui);padding:2px 4px;background:#102f26c9;color:#fff;border-radius:3px}
.framing-editor {width:min(640px,calc(100vw - 16px));max-width:100%;max-height:calc(100dvh - 24px);overflow:auto;padding:max(15px,env(safe-area-inset-top)) max(15px,env(safe-area-inset-right)) max(15px,env(safe-area-inset-bottom));border:1px solid var(--line);border-radius:14px;background:var(--surface);color:var(--text);overscroll-behavior:contain}
.framing-editor::backdrop {background:#071912bb}
.framing-editor h2 {font-size:1.6rem}
.framing-editor label {display:block;margin-top:10px}
.framing-editor input[type=range] {width:100%;min-height:36px;display:block}
.framing-editor select {width:100%;min-height:44px}
.framing-controls {display:grid;grid-template-columns:1fr 1fr;gap:10px}
.framing-preview {position:relative;overflow:hidden;margin:12px auto 0;background:var(--canopy,#173d31);touch-action:none;cursor:grab}
.framing-preview img {position:absolute;inset:0;width:100%;height:100%;max-width:none;pointer-events:none;user-select:none}
.framing-editor [role=alert] {color:var(--bad);overflow-wrap:anywhere}
.framing-editor .actions {margin-top:14px;flex-wrap:wrap}
@media(max-width:670px) {
 .media-frame[data-media-frame] img {object-fit:var(--frame-mobile-fit,cover);object-position:var(--frame-mobile-x,50%) var(--frame-mobile-y,50%);transform:scale(var(--frame-mobile-zoom,1));transform-origin:var(--frame-mobile-x,50%) var(--frame-mobile-y,50%)}
 .organism-card:hover .media-frame img {transform:scale(var(--frame-mobile-zoom,1))}
}
@media(max-width:360px) {.framing-controls {grid-template-columns:1fr}.framing-editor .section-heading {align-items:start;gap:8px}}
