/* Transfer: import/export of admin data (the ⋯ entries, the upload and preview
   dialogs), shared by every admin section. */

/* ⋯ entries that cannot run say why at their right. */

/* Upload: the file picker as a drop box. */
.xf-upload { display: flex; flex-direction: column; gap: 14px; }
.xf-drop { display: grid; grid-template-columns: 36px minmax(0, 1fr); gap: 10px 12px; align-items: center; padding: 14px; border: 1px dashed var(--btn-line); border-radius: 4px; background: var(--panel-2); cursor: pointer; transition: border-color 80ms, background-color 80ms; }
.xf-drop:hover, .xf-drop:focus-within { border-color: var(--accent); }
.xf-drop-ic { width: 36px; height: 36px; padding: 0; justify-content: center; border-radius: 4px; }
.xf-drop-t { display: flex; flex-direction: column; gap: 2px; line-height: 1.35; min-width: 0; }
.xf-drop-t b { font-weight: 500; }
.xf-drop input[type=file] { grid-column: 1 / -1; font: inherit; font-size: 12.5px; color: var(--text-2); min-width: 0; }
.xf-drop input[type=file]::file-selector-button { height: 28px; padding: 0 10px; margin-right: 10px; border: 1px solid var(--btn-line); border-radius: 3px; background: var(--btn-bg); color: var(--text); font: inherit; font-size: 12.5px; font-weight: 500; cursor: pointer; transition: background-color 80ms; }
.xf-drop input[type=file]::file-selector-button:hover { background: var(--hover); }

.xf-note { display: flex; gap: 8px; align-items: flex-start; font-size: 12.5px; line-height: 1.5; color: var(--text-2); }
.xf-note .i { margin-top: 2px; color: var(--muted); flex-shrink: 0; }

/* Preview. */
dialog.xf .dlg-b { gap: 12px; }
.xf-file { display: flex; align-items: center; gap: 8px; min-width: 0; font-size: 12.5px; color: var(--text-2); }
.xf-file .i { color: var(--muted); flex-shrink: 0; }
.xf-file .mono { font-size: 12px; color: var(--text); }
.xf-file .sub { white-space: nowrap; }
.xf-box { border: 1px solid var(--line); border-radius: 4px; overflow: hidden; flex-shrink: 0; }
.xf-head { display: flex; align-items: center; gap: 6px; height: 40px; padding: 0 6px 0 12px; border-bottom: 1px solid var(--line-2); background: var(--panel-2); }
.xf-title { font-size: 13px; font-weight: 600; margin-right: auto; }
.xf-head .sub { margin-right: 6px; }
.xf-find { width: 170px; height: 28px; margin-right: 2px; }
.xf-list { max-height: 264px; overflow: auto; }
.xf-row { position: relative; border-bottom: 1px solid var(--line-2); }
.xf-row:last-child { border-bottom: 0; }
.xf-pick { display: grid; grid-template-columns: 16px 40px minmax(0, 1fr); align-items: center; gap: 10px; height: 34px; padding: 0 84px 0 12px; font-size: 13px; cursor: pointer; transition: background-color 80ms; }
.xf-pick:hover { background: var(--hover); }
.xf-row:has(.cb:checked) .xf-pick { background: var(--sel-bg); }
.xf-idx { font-size: 11.5px; }
.xf-peek > summary { position: absolute; top: 7px; right: 8px; height: 20px; padding: 0 7px; border-radius: 3px; display: flex; align-items: center; font-size: 12px; color: var(--link); cursor: pointer; list-style: none; }
.xf-peek > summary::-webkit-details-marker { display: none; }
.xf-peek > summary:hover { background: var(--hover); }
.xf-peek[open] > summary { color: var(--text-2); }
.xf-json { margin: 0 12px 10px 78px; max-height: 220px; font-size: 11.5px; white-space: pre-wrap; word-break: break-word; }
.xf-issues { max-height: 200px; overflow: auto; padding: 4px 0; }
.xf-issue { display: grid; grid-template-columns: 40px minmax(80px, 170px) minmax(0, 1fr); gap: 10px; align-items: baseline; padding: 5px 12px; font-size: 12.5px; line-height: 1.45; }
.xf-issue .mono { font-size: 11.5px; }
.xf-err { color: var(--bad-fg); }
.xf-more { padding: 4px 12px 6px; }
.xf-result { display: flex; gap: 18px; flex-wrap: wrap; padding: 12px; font-size: 13px; color: var(--text-2); }
.xf-result b { font-size: 15px; font-weight: 600; color: var(--text); margin-right: 3px; }
.xf-result .t-bad, .xf-result .t-bad b { color: var(--bad-fg); }
.xf-result + .xf-issues { border-top: 1px solid var(--line-2); }
