:root, [data-theme='light'] { color-scheme: light; --bg: #f4f1ea; --bg-gradient-start: #fffaf0; --panel: #fffaf0; --border: rgba(24, 33, 29, 0.12); --text: #18211d; --muted: #52605a; --accent: #2f6f57; --accent-2: #2f6f57; --danger: #c4453d; --drop: rgba(47, 111, 87, 0.12); --warning: #eeb04e; --overlay: rgba(244, 241, 234, 0.72); --finder-bg: #fffaf0; --finder-bg-head: #f0ebe0; --finder-bg-body: #ffffff; --finder-border: rgba(24, 33, 29, 0.14); --finder-text: #18211d; --finder-muted: #52605a; --finder-subtle: #7a8780; --finder-surface: #ffffff; --finder-accent: #2f6f57; --finder-hover: rgba(47, 111, 87, 0.08); --finder-selected: rgba(47, 111, 87, 0.16); --finder-drop: rgba(47, 111, 87, 0.12); --finder-danger: #c4453d; --finder-input-border: rgba(24, 33, 29, 0.18); --finder-focus-ring: rgba(47, 111, 87, 0.15); --finder-accent-ghost: rgba(47, 111, 87, 0.1); --finder-chip-active-bg: rgba(47, 111, 87, 0.12); --finder-chip-active-border: rgba(47, 111, 87, 0.35); --finder-resizer: #7a8780; --finder-row-border: rgba(24, 33, 29, 0.06); --finder-bc-bg: #f4f1ea; --finder-empty-bg: #faf8f4; } [data-theme='dark'] { color-scheme: dark; --bg: #0f1419; --bg-gradient-start: #1a2236; --panel: #121820; --border: #243041; --text: #e7ecf3; --muted: #8fa3bf; --accent: #3d8bfd; --accent-2: #3dd68c; --danger: #ff6b7a; --drop: rgba(91, 140, 255, 0.12); --warning: #ffb347; --overlay: rgba(15, 17, 23, 0.72); --finder-bg: #121820; --finder-bg-head: #1c2735; --finder-bg-body: #0f1419; --finder-border: #243041; --finder-text: #e7ecf3; --finder-muted: #8fa3bf; --finder-subtle: #6b829e; --finder-surface: #1c2735; --finder-accent: #3d8bfd; --finder-hover: rgba(61, 139, 253, 0.12); --finder-selected: rgba(61, 139, 253, 0.22); --finder-drop: rgba(61, 139, 253, 0.18); --finder-danger: #ff6b7a; --finder-input-border: #2a3a50; --finder-focus-ring: rgba(61, 139, 253, 0.25); --finder-accent-ghost: rgba(61, 139, 253, 0.1); --finder-chip-active-bg: rgba(61, 139, 253, 0.15); --finder-chip-active-border: rgba(61, 139, 253, 0.45); --finder-resizer: #6b829e; --finder-row-border: #243041; --finder-bc-bg: #1c2735; --finder-empty-bg: #121820; } * { box-sizing: border-box; } body { margin: 0; min-height: 100vh; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; background: radial-gradient(circle at top, var(--bg-gradient-start) 0%, var(--bg) 45%); color: var(--text); } .wrap { max-width: min(1280px, 96vw); margin: 0 auto; padding: 10px 16px 20px; } /* Compact top bar */ .top-bar { display: flex; align-items: center; gap: 8px; padding: 5px 10px; border: 1px dashed var(--border); border-radius: 8px; background: var(--drop); transition: .15s; cursor: pointer; min-height: 34px; flex-wrap: nowrap; overflow: hidden; } .top-bar.dragover { border-color: var(--accent); background: rgba(91,140,255,.22); } .top-title { font-size: 13px; font-weight: 600; white-space: nowrap; flex: none; } .top-sub kbd { font-size: 10px; padding: 0 3px; border-radius: 3px; border: 1px solid var(--border); background: var(--panel); font-family: inherit; } .top-sub { font-size: 11px; color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; flex: none; max-width: 220px; } .links { display: flex; flex-wrap: nowrap; gap: 4px; flex: 1; min-width: 0; overflow: hidden; justify-content: flex-end; } .link-chip { background: var(--panel); border: 1px solid var(--border); border-radius: 999px; padding: 2px 8px; font-size: 10px; color: var(--accent); text-decoration: none; white-space: nowrap; flex: none; } .link-chip:hover { border-color: var(--accent); } .link-chip.active { border-color: var(--accent); background: var(--finder-chip-active-bg); color: var(--finder-accent); font-weight: 600; } .top-actions { display: flex; gap: 4px; flex: none; } .top-actions button { padding: 3px 8px; font-size: 11px; min-height: 0; line-height: 1.3; } .top-actions button.primary { padding: 3px 9px; } /* Legacy drop (unused) */ .drop { border: 1.5px dashed var(--border); border-radius: 12px; background: var(--drop); padding: 20px 16px; text-align: center; transition: .15s; cursor: pointer; } .drop.dragover { border-color: var(--accent); background: rgba(91,140,255,.22); transform: scale(1.005); } .drop-title { font-size: 14px; font-weight: 600; margin-bottom: 4px; } .drop-hint { color: var(--muted); font-size: 11px; line-height: 1.5; } .drop-hint kbd { font-size: 10px; padding: 1px 4px; border-radius: 4px; border: 1px solid var(--border); background: var(--panel); } .actions { display: flex; flex-wrap: wrap; gap: 6px; justify-content: center; margin-top: 10px; } button, .btn { appearance: none; border: 1px solid var(--border); background: var(--panel); color: var(--text); border-radius: 6px; padding: 5px 10px; font-size: 12px; cursor: pointer; text-decoration: none; display: inline-flex; align-items: center; gap: 4px; } button.primary { background: var(--accent); border-color: var(--accent); color: #fff; } button:hover, .btn:hover { filter: brightness(1.08); } button:disabled { opacity: 0.45; cursor: not-allowed; filter: none; } .status { min-height: 16px; margin: 8px 0 4px; font-size: 11px; color: var(--muted); } .status.ok { color: var(--accent-2); } .status.err { color: var(--danger); } /* Sync badge */ .sync-badge { display: inline-flex; align-items: center; gap: 4px; font-size: 10px; margin-left: 6px; font-weight: 400; } .sync-badge .dot { width: 6px; height: 6px; border-radius: 50%; background: var(--accent-2); flex: none; } .sync-badge.offline .dot { background: var(--danger); } .sync-badge.offline { color: var(--danger); } /* Simple progress bar */ .progress { height: 4px; background: var(--border); border-radius: 999px; overflow: hidden; margin-top: 8px; display: none; } .progress.show { display: block; } .progress > i { display: block; height: 100%; width: 0%; background: linear-gradient(90deg, var(--accent), var(--accent-2)); transition: width .2s; } /* Upload progress detail panel */ .progress-detail { display: none; margin-top: 8px; background: var(--panel); border: 1px solid var(--border); border-radius: 10px; padding: 10px 12px; font-size: 11px; } .progress-detail.show { display: block; } .progress-detail-head { display: flex; justify-content: space-between; align-items: center; margin-bottom: 8px; color: var(--muted); } .progress-detail-head strong { color: var(--text); font-size: 12px; } .progress-detail-list { max-height: 160px; overflow-y: auto; display: flex; flex-direction: column; gap: 6px; } .progress-item { display: grid; grid-template-columns: minmax(0, 1fr) 72px 56px; gap: 8px; align-items: center; } .progress-item-name { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .progress-item-bar { height: 4px; background: var(--border); border-radius: 999px; overflow: hidden; grid-column: 1 / -1; } .progress-item-bar i { display: block; height: 100%; width: 0%; background: var(--accent); transition: width .15s; } .progress-item-meta { font-size: 10px; color: var(--muted); text-align: right; } .progress-item-status { font-size: 10px; text-align: right; } .progress-item-status.done { color: var(--accent-2); } .progress-item-status.err { color: var(--danger); } /* Drag overlay */ .drag-overlay { position: fixed; inset: 0; z-index: 200; pointer-events: none; display: none; align-items: center; justify-content: center; background: var(--overlay); backdrop-filter: blur(4px); } .drag-overlay.show { display: flex; pointer-events: none; } .drag-overlay-box { border: 2px dashed var(--accent); border-radius: 20px; padding: 32px 48px; background: rgba(91, 140, 255, 0.15); text-align: center; } .drag-overlay-box .icon { font-size: 48px; margin-bottom: 12px; } .drag-overlay-box .hint { font-size: 18px; font-weight: 600; color: var(--text); } .drag-overlay-box .sub { font-size: 13px; color: var(--muted); margin-top: 6px; } /* Panel shell */ .panel-shell { margin-top: 8px; position: relative; width: 100%; max-width: 100%; } .panel { display: flex; flex-direction: column; background: var(--finder-bg); border: 1px solid var(--finder-border); border-radius: 10px; overflow: hidden; color: var(--finder-text); height: 520px; min-height: 280px; max-height: 85vh; } .panel-resizer { position: absolute; right: 0; bottom: 0; width: 18px; height: 18px; cursor: nwse-resize; z-index: 3; touch-action: none; } .panel-resizer::after { content: ''; position: absolute; right: 4px; bottom: 4px; width: 10px; height: 10px; border-right: 2px solid var(--finder-subtle); border-bottom: 2px solid var(--finder-subtle); border-radius: 0 0 2px 0; opacity: 0.75; transition: opacity .15s; } .panel-resizer:hover::after, .panel-shell-resizing .panel-resizer::after { opacity: 1; border-color: var(--finder-accent); } body.panel-shell-resizing { user-select: none; cursor: nwse-resize; } /* Toolbar */ .panel-head { display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 8px; padding: 10px 14px; border-bottom: 1px solid var(--finder-border); font-weight: 600; font-size: 13px; background: var(--finder-bg-head); flex: none; } .panel-head small { color: var(--finder-muted); font-weight: 400; } .panel-head button { background: var(--finder-surface); border-color: var(--finder-input-border); color: var(--finder-text); padding: 4px 10px; border-radius: 6px; font-size: 12px; } .panel-head .bulk-actions { display: flex; gap: 6px; align-items: center; flex-wrap: wrap; } .panel-head .select-all-label { display: inline-flex; align-items: center; gap: 4px; font-weight: 400; font-size: 12px; color: var(--finder-muted); cursor: pointer; user-select: none; } .panel-head .select-all-label input { width: 14px; height: 14px; accent-color: var(--finder-accent); cursor: pointer; } .panel-head .bulk-actions button.danger { background: var(--finder-surface); border-color: var(--finder-danger); color: var(--finder-danger); } .panel-head .bulk-actions button.danger:disabled { opacity: 0.45; cursor: not-allowed; } .panel-head .bulk-actions button.danger:not(:disabled):hover { background: var(--finder-danger); color: #fff; } /* Search bar */ .toolbar-search { display: flex; align-items: center; gap: 6px; flex: 1; min-width: 140px; max-width: 220px; } .toolbar-search input { flex: 1; min-width: 0; padding: 4px 8px; border: 1px solid var(--finder-input-border); border-radius: 6px; font-size: 12px; background: var(--finder-surface); color: var(--finder-text); } .toolbar-search input:focus { outline: none; border-color: var(--finder-accent); box-shadow: 0 0 0 2px var(--finder-focus-ring); } .toolbar-search input::placeholder { color: var(--finder-subtle); } /* Conflict policy select */ .conflict-select { padding: 4px 6px; border: 1px solid var(--finder-input-border); border-radius: 6px; font-size: 11px; background: var(--finder-surface); color: var(--finder-text); cursor: pointer; } .conflict-select:focus { outline: none; border-color: var(--finder-accent); } /* Notification toggle */ .notify-btn { position: relative; } .notify-btn.active { background: var(--finder-hover); border-color: var(--finder-accent); color: var(--finder-accent); } .notify-btn .badge { position: absolute; top: -4px; right: -4px; width: 8px; height: 8px; border-radius: 50%; background: var(--accent-2); display: none; } .notify-btn.has-unread .badge { display: block; } .view-toggle { display: inline-flex; border: 1px solid var(--finder-input-border); border-radius: 6px; overflow: hidden; background: var(--finder-surface); } .view-toggle button { border: none; border-radius: 0; padding: 4px 8px; min-height: 0; background: var(--finder-surface); color: var(--finder-muted); font-size: 14px; line-height: 1; } .view-toggle button + button { border-left: 1px solid var(--finder-input-border); } .view-toggle button.active { background: var(--finder-hover); color: var(--finder-accent); } .view-toggle button:hover { filter: none; background: var(--finder-hover); } .view-toggle button.active:hover { background: var(--finder-hover); } .breadcrumb { display: flex; flex-wrap: wrap; align-items: center; gap: 4px; padding: 8px 14px; border-bottom: 1px solid var(--finder-border); background: var(--finder-bc-bg); font-size: 12px; color: var(--finder-muted); flex: none; } .breadcrumb .bc-link { background: none; border: none; padding: 0; color: var(--finder-accent); cursor: pointer; font-size: 12px; border-radius: 0; min-height: 0; } .breadcrumb .bc-link:hover { text-decoration: underline; filter: none; } .breadcrumb .bc-sep { color: var(--finder-subtle); user-select: none; } .breadcrumb .bc-current { color: var(--finder-text); font-weight: 600; } /* File list */ .file-list { font-size: 13px; line-height: 1.2; flex: 1; min-height: 0; display: flex; flex-direction: column; } .list-header, .list-row { display: grid; grid-template-columns: 28px minmax(0, 1fr) 88px 148px 72px; align-items: center; column-gap: 12px; padding: 0 12px; } .list-header .col-check, .list-row .col-check { display: flex; align-items: center; justify-content: center; cursor: pointer; min-height: 28px; } .list-header .col-check input, .list-row .col-check input, .list-row .col-check { width: 14px; height: 14px; cursor: pointer; accent-color: var(--finder-accent); } .list-row .col-check { width: 28px; margin: 0; } .list-header { height: 28px; background: var(--finder-bg-head); border-bottom: 1px solid var(--finder-border); color: var(--finder-muted); font-size: 12px; user-select: none; flex: none; } .list-header .sortable { cursor: pointer; display: inline-flex; align-items: center; gap: 4px; } .list-header .sortable:hover { color: var(--finder-text); } .list-header .sortable.active { color: var(--finder-text); font-weight: 600; } .list-header .col-size, .list-row .col-size { text-align: right; font-variant-numeric: tabular-nums; } .list-header .col-date, .list-row .col-date { color: var(--finder-muted); font-variant-numeric: tabular-nums; white-space: nowrap; } .list-body { background: var(--finder-bg-body); flex: 1; min-height: 0; overflow: auto; position: relative; } .list-body.drop-target { background: var(--finder-drop); outline: 1px dashed var(--finder-accent); outline-offset: -2px; } .list-row { min-height: 28px; border-bottom: 1px solid var(--finder-row-border); position: relative; } .list-row:last-child { border-bottom: none; } .list-row:hover { background: var(--finder-hover); } .list-row.selected { background: var(--finder-selected); } .list-row.folder { cursor: default; } .list-row[draggable="true"], .icon-item[draggable="true"] { cursor: grab; } .list-row.dragging, .icon-item.dragging { opacity: 0.45; } .list-row .col-name { display: flex; align-items: center; gap: 6px; min-width: 0; } .list-row .chevron { width: 12px; flex: none; color: var(--finder-subtle); font-size: 10px; text-align: center; } .list-row .chevron.hidden { visibility: hidden; } /* Origin badge */ .origin-badge { flex: none; font-size: 9px; padding: 1px 5px; border-radius: 999px; background: var(--finder-hover); border: 1px solid var(--finder-border); color: var(--finder-muted); max-width: 72px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .origin-badge.self { background: var(--finder-hover); border-color: var(--finder-chip-active-border); color: var(--finder-accent); } /* Inline rename */ .rename-input { flex: 1; min-width: 0; padding: 1px 4px; border: 1px solid var(--finder-accent); border-radius: 4px; font-size: 13px; font-family: inherit; background: var(--finder-surface); color: var(--finder-text); } .rename-input:focus { outline: none; box-shadow: 0 0 0 2px var(--finder-focus-ring); } .file-icon { width: 16px; height: 16px; flex: none; background-size: contain; background-repeat: no-repeat; } .file-icon.large { width: 48px; height: 48px; } .file-icon.folder { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='%234da3ff' d='M1.5 3.5A1 1 0 0 1 2.5 2.5h3.2l1.3 1.3h6.5a1 1 0 0 1 1 1v7.7a1 1 0 0 1-1 1h-12a1 1 0 0 1-1-1z'/%3E%3C/svg%3E"); } .file-icon.doc { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='%23c7c7cc' d='M3 1.5h6.5L13 5v9.5H3z'/%3E%3Cpath fill='%23fff' d='M9.5 1.5V5H13'/%3E%3C/svg%3E"); } .file-icon.sheet { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='%2334c759' d='M3 1.5h6.5L13 5v9.5H3z'/%3E%3Cpath fill='%23fff' d='M9.5 1.5V5H13'/%3E%3C/svg%3E"); } .file-icon.word { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='%232b579a' d='M3 1.5h6.5L13 5v9.5H3z'/%3E%3Cpath fill='%23fff' d='M9.5 1.5V5H13'/%3E%3C/svg%3E"); } .file-icon.pdf { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='%23ff3b30' d='M3 1.5h6.5L13 5v9.5H3z'/%3E%3Cpath fill='%23fff' d='M9.5 1.5V5H13'/%3E%3C/svg%3E"); } .file-icon.video { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Crect fill='%235b8cff' x='2' y='3' width='12' height='10' rx='1.5'/%3E%3Cpath fill='%23fff' d='M7 6.5v3l3-1.5z'/%3E%3C/svg%3E"); } .list-row .name-link { color: var(--finder-text); text-decoration: none; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .list-row .name-link.previewable:hover { color: var(--finder-accent); text-decoration: underline; } .list-row .name-text { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--finder-text); } .list-row .col-size { color: var(--finder-muted); } .list-row .col-actions { display: flex; justify-content: flex-end; gap: 4px; opacity: 0; } .list-row:hover .col-actions { opacity: 1; } .list-row .col-actions button, .list-row .col-actions a { background: transparent; border: none; color: var(--finder-accent); padding: 2px 4px; font-size: 12px; border-radius: 4px; min-height: 0; } .list-row .col-actions button:hover, .list-row .col-actions a:hover { background: var(--finder-accent-ghost); filter: none; } .list-row .col-actions button[data-del] { color: var(--finder-danger); } .list-row .col-actions button[data-info] { color: var(--finder-muted); } /* Empty + empty folder drop zone */ .empty { padding: 40px 18px; text-align: center; color: var(--finder-subtle); background: var(--finder-bg-body); font-size: 13px; } .empty-drop-zone { margin: 24px auto; max-width: 360px; padding: 32px 20px; border: 2px dashed var(--finder-input-border); border-radius: 12px; background: var(--finder-bc-bg); color: var(--finder-muted); transition: .15s; } .empty-drop-zone.dragover { border-color: var(--finder-accent); background: var(--finder-drop); color: var(--finder-accent); } .empty-drop-zone .icon { font-size: 32px; margin-bottom: 8px; } /* Load more */ .load-more-wrap { padding: 10px; text-align: center; background: var(--finder-bg-body); border-top: 1px solid var(--finder-row-border); } .load-more-btn { background: var(--finder-surface); border: 1px solid var(--finder-input-border); color: var(--finder-accent); padding: 6px 16px; border-radius: 6px; font-size: 12px; cursor: pointer; } .load-more-btn:hover { background: var(--finder-hover); filter: none; } input[type=file] { display: none; } .list-row.drop-target { background: var(--finder-drop) !important; } /* Icon mode */ .file-list.icon-mode .list-header { display: none; } .file-list.icon-mode .list-body { display: grid; grid-template-columns: repeat(auto-fill, minmax(96px, 1fr)); gap: 8px; padding: 12px; align-content: start; } .icon-item { position: relative; display: flex; flex-direction: column; align-items: center; gap: 6px; padding: 10px 6px 8px; border-radius: 8px; cursor: default; border: 1px solid transparent; min-width: 0; text-align: center; } .icon-item.folder { cursor: default; } .icon-item:hover { background: var(--finder-hover); border-color: var(--finder-chip-active-border); } .icon-item.selected { background: var(--finder-selected); border-color: var(--finder-chip-active-border); } .icon-item.drop-target { background: var(--finder-drop) !important; border-color: var(--finder-accent); } .icon-item .item-check-wrap { position: absolute; top: 4px; left: 4px; z-index: 2; display: flex; align-items: center; justify-content: center; width: 22px; height: 22px; cursor: pointer; } .icon-item .item-check { width: 14px; height: 14px; accent-color: var(--finder-accent); cursor: pointer; margin: 0; } .icon-item .icon-thumb { width: 56px; height: 56px; display: flex; align-items: center; justify-content: center; flex: none; } .icon-item .icon-thumb .file-icon { width: 48px; height: 48px; } .icon-item .icon-thumb-img { width: 56px; height: 56px; object-fit: cover; border-radius: 6px; border: 1px solid var(--finder-row-border); background: var(--finder-bc-bg); } .icon-item .icon-name { width: 100%; font-size: 11px; line-height: 1.35; color: var(--finder-text); overflow: hidden; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; word-break: break-all; } .icon-item .icon-name a { color: inherit; text-decoration: none; } .icon-item .icon-name a.previewable:hover { color: var(--finder-accent); text-decoration: underline; } .icon-item .icon-meta { font-size: 10px; color: var(--finder-subtle); line-height: 1.2; } .icon-item .icon-actions { display: flex; gap: 6px; opacity: 0; font-size: 11px; } .icon-item:hover .icon-actions { opacity: 1; } .icon-item .icon-actions a, .icon-item .icon-actions button { background: none; border: none; color: var(--finder-accent); padding: 0; font-size: 11px; min-height: 0; } .icon-item .icon-actions button[data-del] { color: var(--finder-danger); } /* Modals (shared) */ .modal { position: fixed; inset: 0; background: rgba(0,0,0,.72); display: none; align-items: center; justify-content: center; z-index: 100; padding: 24px; } .modal.show { display: flex; } .modal-box { background: var(--panel); border: 1px solid var(--border); border-radius: 16px; max-width: min(960px, 96vw); max-height: 92vh; width: 100%; display: flex; flex-direction: column; } .modal-box.sm { max-width: min(480px, 96vw); } .modal-head { display: flex; justify-content: space-between; align-items: center; padding: 12px 16px; border-bottom: 1px solid var(--border); gap: 12px; } .modal-head span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .modal-body { padding: 16px; overflow: auto; min-height: 0; } .modal-body img, .modal-body video { max-width: 100%; display: block; margin: 0 auto; } .modal-body iframe { width: 100%; height: 70vh; border: 0; background: #fff; } .modal-body pre { margin: 0; padding: 16px; white-space: pre-wrap; word-break: break-word; font-size: 13px; line-height: 1.6; } .modal-foot { display: flex; justify-content: flex-end; gap: 8px; padding: 12px 16px; border-top: 1px solid var(--border); } /* Detail modal */ .detail-grid { display: grid; grid-template-columns: 100px 1fr; gap: 8px 12px; font-size: 13px; } .detail-grid dt { color: var(--muted); } .detail-grid dd { margin: 0; word-break: break-all; } /* Conflict modal */ .conflict-list { max-height: 240px; overflow-y: auto; margin: 12px 0; } .conflict-item { padding: 8px 10px; border: 1px solid var(--border); border-radius: 8px; margin-bottom: 6px; font-size: 12px; } .conflict-item .path { color: var(--muted); font-size: 11px; margin-top: 2px; } .conflict-actions { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 12px; } .conflict-actions label { display: flex; align-items: center; gap: 4px; font-size: 12px; cursor: pointer; } /* Trash drawer */ .trash-drawer { position: fixed; top: 0; right: 0; bottom: 0; width: min(400px, 92vw); background: var(--panel); border-left: 1px solid var(--border); z-index: 90; transform: translateX(100%); transition: transform .25s ease; display: flex; flex-direction: column; } .trash-drawer.show { transform: translateX(0); } .trash-drawer-head { display: flex; justify-content: space-between; align-items: center; padding: 14px 16px; border-bottom: 1px solid var(--border); font-weight: 600; } .trash-drawer-body { flex: 1; overflow-y: auto; padding: 8px; } .trash-item { display: flex; align-items: center; gap: 8px; padding: 10px; border: 1px solid var(--border); border-radius: 8px; margin-bottom: 6px; font-size: 12px; } .trash-item-info { flex: 1; min-width: 0; } .trash-item-name { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-weight: 500; } .trash-item-meta { font-size: 10px; color: var(--muted); margin-top: 2px; } .trash-item-actions { display: flex; gap: 4px; flex-shrink: 0; } .trash-item-actions button { padding: 4px 8px; font-size: 11px; } .trash-empty { padding: 32px 16px; text-align: center; color: var(--muted); font-size: 13px; } .trash-drawer-foot { padding: 12px 16px; border-top: 1px solid var(--border); display: flex; justify-content: space-between; gap: 8px; } .trash-backdrop { position: fixed; inset: 0; background: rgba(0,0,0,.4); z-index: 85; display: none; } .trash-backdrop.show { display: block; }