.root { display: flex; height: 100%; overflow: hidden; animation: fadeIn 0.14s ease both; } /* ── Sidebar ── */ .sidebar { width: 200px; flex-shrink: 0; padding: var(--sp-5); border-right: 1px solid var(--border-dim); overflow-y: auto; display: flex; flex-direction: column; gap: var(--sp-4); background: var(--bg-base); } .back { display: flex; align-items: center; gap: var(--sp-2); color: var(--text-muted); font-size: var(--text-xs); font-family: var(--font-ui); letter-spacing: var(--tracking-wide); text-transform: uppercase; transition: color var(--t-base); } .back:hover { color: var(--text-secondary); } .coverWrap { width: 100%; aspect-ratio: 2 / 3; border-radius: var(--radius-md); overflow: hidden; background: var(--bg-raised); border: 1px solid var(--border-dim); flex-shrink: 0; } .cover { width: 100%; height: 100%; object-fit: cover; } .metaSkeleton { display: flex; flex-direction: column; gap: var(--sp-2); } .skLine { border-radius: var(--radius-sm); } .meta { display: flex; flex-direction: column; gap: var(--sp-3); } .title { font-size: var(--text-base); font-weight: var(--weight-medium); color: var(--text-primary); line-height: var(--leading-snug); letter-spacing: var(--tracking-tight); } .byline { font-size: var(--text-xs); color: var(--text-muted); font-family: var(--font-ui); } .statusBadge { display: inline-block; font-family: var(--font-ui); font-size: var(--text-2xs); letter-spacing: var(--tracking-wider); text-transform: uppercase; padding: 2px 7px; border-radius: var(--radius-sm); width: fit-content; } .statusOngoing { background: var(--accent-muted); color: var(--accent-fg); border: 1px solid var(--accent-dim); } .statusEnded { background: var(--bg-raised); color: var(--text-faint); border: 1px solid var(--border-dim); } .genres { display: flex; flex-wrap: wrap; gap: var(--sp-1); } .genre { font-size: var(--text-2xs); font-family: var(--font-ui); color: var(--text-faint); background: var(--bg-raised); border: 1px solid var(--border-dim); border-radius: var(--radius-sm); padding: 1px 6px; letter-spacing: var(--tracking-wide); } .genreClickable { cursor: pointer; transition: color var(--t-base), border-color var(--t-base), background var(--t-base); } .genreClickable:hover { color: var(--accent-fg); border-color: var(--accent-dim); background: var(--accent-muted); } .sourceLabel { font-family: var(--font-ui); font-size: var(--text-2xs); color: var(--text-faint); letter-spacing: var(--tracking-wide); text-transform: uppercase; } .description { font-size: var(--text-xs); color: var(--text-muted); line-height: var(--leading-base); display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; } .descriptionExpanded { -webkit-line-clamp: unset; display: block; overflow: visible; } .descriptionWrap { display: flex; flex-direction: column; gap: 2px; } .descToggle { font-family: var(--font-ui); font-size: var(--text-2xs); color: var(--accent-fg); letter-spacing: var(--tracking-wide); background: none; border: none; padding: 0; cursor: pointer; text-align: left; opacity: 0.7; transition: opacity var(--t-base); } .descToggle:hover { opacity: 1; } .genreToggle { font-family: var(--font-ui); font-size: var(--text-2xs); color: var(--text-faint); background: var(--bg-raised); border: 1px solid var(--border-dim); border-radius: var(--radius-sm); padding: 1px 6px; letter-spacing: var(--tracking-wide); cursor: pointer; transition: color var(--t-base), border-color var(--t-base); } .genreToggle:hover { color: var(--accent-fg); border-color: var(--accent-dim); } /* ── Progress ── */ .progressSection { display: flex; flex-direction: column; gap: var(--sp-1); } .progressHeader { display: flex; justify-content: space-between; align-items: center; } .progressLabel { font-family: var(--font-ui); font-size: var(--text-2xs); color: var(--text-faint); letter-spacing: var(--tracking-wide); } .progressPct { font-family: var(--font-ui); font-size: var(--text-2xs); color: var(--accent-fg); letter-spacing: var(--tracking-wide); } .progressTrack { height: 3px; background: var(--border-base); border-radius: var(--radius-full); overflow: hidden; } .progressFill { height: 100%; background: var(--accent); border-radius: var(--radius-full); transition: width 0.4s ease; } /* ── Actions ── */ .actions { display: flex; align-items: center; gap: var(--sp-2); } .libraryBtn { display: flex; align-items: center; gap: var(--sp-2); font-size: var(--text-xs); font-family: var(--font-ui); letter-spacing: var(--tracking-wide); padding: 5px 10px; border-radius: var(--radius-md); border: 1px solid var(--border-strong); color: var(--text-muted); background: var(--bg-raised); transition: border-color var(--t-base), color var(--t-base), background var(--t-base); flex: 1; } .libraryBtn:hover { border-color: var(--accent); color: var(--accent-fg); } .libraryBtn:disabled { opacity: 0.4; cursor: default; } .libraryBtnActive { background: var(--accent-muted); border-color: var(--accent-dim); color: var(--accent-fg); } .externalLink { display: flex; align-items: center; justify-content: center; width: 28px; height: 28px; border-radius: var(--radius-md); border: 1px solid var(--border-dim); color: var(--text-faint); flex-shrink: 0; transition: color var(--t-base), border-color var(--t-base); } .externalLink:hover { color: var(--text-muted); border-color: var(--border-strong); } /* ── Start/Continue reading button ── */ .readBtn { display: flex; align-items: center; justify-content: center; gap: var(--sp-2); width: 100%; padding: 8px var(--sp-3); border-radius: var(--radius-md); background: var(--accent-dim); border: 1px solid var(--accent); color: var(--accent-fg); font-size: var(--text-xs); font-family: var(--font-ui); letter-spacing: var(--tracking-wide); cursor: pointer; transition: background var(--t-base), border-color var(--t-base); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .readBtn:hover { background: var(--accent-muted); border-color: var(--accent-bright); } .chapterCount { font-family: var(--font-ui); font-size: var(--text-2xs); color: var(--text-faint); letter-spacing: var(--tracking-wide); text-transform: uppercase; padding-top: var(--sp-2); } /* ── Sidebar mark-all quick actions ── */ .markAllRow { display: flex; gap: var(--sp-2); } .markAllBtn { flex: 1; display: flex; align-items: center; justify-content: center; gap: 4px; padding: 5px var(--sp-2); border-radius: var(--radius-md); border: 1px solid var(--border-dim); background: none; color: var(--text-faint); font-family: var(--font-ui); font-size: var(--text-2xs); letter-spacing: var(--tracking-wide); cursor: pointer; transition: color var(--t-base), border-color var(--t-base), background var(--t-base); } .markAllBtn:hover:not(:disabled) { color: var(--text-secondary); border-color: var(--border-strong); background: var(--bg-raised); } .markAllBtn:disabled { opacity: 0.3; cursor: default; } /* ── Chapter list ── */ .listWrap { flex: 1; display: flex; flex-direction: column; overflow: hidden; } .listHeader { display: flex; align-items: center; justify-content: space-between; padding: var(--sp-3) var(--sp-4); border-bottom: 1px solid var(--border-dim); flex-shrink: 0; } .sortBtn { display: flex; align-items: center; gap: var(--sp-2); font-family: var(--font-ui); font-size: var(--text-xs); color: var(--text-muted); letter-spacing: var(--tracking-wide); padding: 4px 8px; border-radius: var(--radius-md); transition: background var(--t-base), color var(--t-base); } .sortBtn:hover { background: var(--bg-raised); color: var(--text-secondary); } .pagination { display: flex; align-items: center; gap: var(--sp-2); } .paginationBottom { display: flex; align-items: center; justify-content: center; gap: var(--sp-3); padding: var(--sp-3) var(--sp-4); border-top: 1px solid var(--border-dim); flex-shrink: 0; } .pageBtn { font-family: var(--font-ui); font-size: var(--text-xs); color: var(--text-muted); letter-spacing: var(--tracking-wide); padding: 3px 8px; border-radius: var(--radius-sm); border: 1px solid var(--border-dim); background: none; cursor: pointer; transition: background var(--t-base), color var(--t-base), border-color var(--t-base); } .pageBtn:hover:not(:disabled) { background: var(--bg-raised); color: var(--text-secondary); border-color: var(--border-strong); } .pageBtn:disabled { opacity: 0.3; cursor: default; } .pageNum { font-family: var(--font-ui); font-size: var(--text-xs); color: var(--text-faint); letter-spacing: var(--tracking-wide); min-width: 40px; text-align: center; } .list { flex: 1; overflow-y: auto; padding: var(--sp-2) var(--sp-4); display: flex; flex-direction: column; gap: 1px; } .rowSkeleton { display: flex; flex-direction: column; gap: var(--sp-2); padding: 12px var(--sp-3); border-radius: var(--radius-md); background: var(--bg-raised); margin-bottom: 1px; } .row { display: flex; justify-content: space-between; align-items: center; background: none; border: none; border-radius: var(--radius-md); padding: 10px var(--sp-3); cursor: pointer; text-align: left; width: 100%; color: var(--text-primary); transition: background var(--t-fast); } .row:hover { background: var(--bg-raised); } .rowRead .chName { color: var(--text-faint); } .chLeft { display: flex; flex-direction: column; gap: 3px; overflow: hidden; flex: 1; min-width: 0; } .chName { font-size: var(--text-base); color: var(--text-secondary); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; transition: color var(--t-fast); } .row:hover .chName { color: var(--text-primary); } .chMeta { display: flex; align-items: center; gap: var(--sp-3); } .chMetaItem { font-family: var(--font-ui); font-size: var(--text-2xs); color: var(--text-faint); letter-spacing: var(--tracking-wide); } .chRight { display: flex; align-items: center; gap: var(--sp-2); flex-shrink: 0; margin-left: var(--sp-3); } .bookmarkIcon { color: var(--accent); } .readIcon { color: var(--text-faint); } .downloadedIcon { color: var(--accent-fg); } .enqueuingIcon { color: var(--text-faint); } .dlBtn { display: flex; align-items: center; justify-content: center; width: 24px; height: 24px; border-radius: var(--radius-sm); color: var(--text-faint); transition: color var(--t-base), background var(--t-base); } .dlBtn:hover { color: var(--text-muted); background: var(--bg-overlay); } /* ── Download section ── */ .downloadSection { position: relative; margin-top: var(--sp-2); } .downloadToggle { display: flex; align-items: center; gap: var(--sp-2); width: 100%; padding: 7px var(--sp-3); border-radius: var(--radius-md); border: 1px solid var(--border-dim); background: none; color: var(--text-muted); font-size: var(--text-sm); cursor: pointer; transition: background var(--t-base), color var(--t-base), border-color var(--t-base); } .downloadToggle:hover { background: var(--bg-raised); color: var(--text-secondary); border-color: var(--border-strong); } .downloadMenu { margin-top: var(--sp-1); background: var(--bg-raised); border: 1px solid var(--border-base); border-radius: var(--radius-lg); padding: var(--sp-1); display: flex; flex-direction: column; gap: 1px; box-shadow: 0 4px 16px rgba(0,0,0,0.4); animation: fadeIn 0.1s ease both; } .dlItem { display: flex; flex-direction: column; align-items: flex-start; gap: 2px; width: 100%; padding: 7px var(--sp-3); border-radius: var(--radius-md); font-size: var(--text-sm); color: var(--text-secondary); background: none; border: none; cursor: pointer; text-align: left; transition: background var(--t-fast), color var(--t-fast); } .dlItem:hover { background: var(--bg-overlay); color: var(--text-primary); } .dlItemSub { font-size: var(--text-xs); color: var(--text-faint); } /* ── Details section ── */ .detailsSection { margin-top: var(--sp-2); border-top: 1px solid var(--border-dim); padding-top: var(--sp-2); } .detailsToggle { display: flex; align-items: center; justify-content: space-between; width: 100%; padding: 4px var(--sp-1); border-radius: var(--radius-md); background: none; border: none; color: var(--text-faint); font-family: var(--font-ui); font-size: var(--text-2xs); letter-spacing: var(--tracking-wider); text-transform: uppercase; cursor: pointer; transition: color var(--t-base), background var(--t-base); } .detailsToggle:hover { color: var(--text-muted); background: var(--bg-raised); } .caretClosed { transition: transform var(--t-base); } .caretOpen { transform: rotate(180deg); transition: transform var(--t-base); } .detailsBody { display: flex; flex-direction: column; gap: var(--sp-2); padding: var(--sp-2) var(--sp-1); } .detailRow { display: flex; justify-content: space-between; align-items: baseline; gap: var(--sp-2); } .detailKey { font-family: var(--font-ui); font-size: var(--text-2xs); color: var(--text-faint); letter-spacing: var(--tracking-wide); flex-shrink: 0; } .detailVal { font-size: var(--text-xs); color: var(--text-muted); text-align: right; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .detailMono { font-family: monospace; font-size: var(--text-2xs); color: var(--text-faint); } .migrateBtn { display: flex; align-items: center; gap: var(--sp-2); width: 100%; padding: 6px var(--sp-2); margin-top: var(--sp-1); border-radius: var(--radius-md); border: 1px solid var(--border-dim); background: none; color: var(--text-muted); font-family: var(--font-ui); font-size: var(--text-xs); letter-spacing: var(--tracking-wide); cursor: pointer; transition: color var(--t-base), border-color var(--t-base), background var(--t-base); } .migrateBtn:hover { color: var(--text-secondary); border-color: var(--border-strong); background: var(--bg-raised); } /* ── List header right controls ── */ .listHeaderRight { display: flex; align-items: center; gap: var(--sp-2); } /* ── Download dropdown (in list header) ── */ .dlWrap { position: relative; } .dlToggleBtn { display: flex; align-items: center; justify-content: center; width: 28px; height: 28px; border-radius: var(--radius-md); border: 1px solid var(--border-dim); color: var(--text-muted); background: none; cursor: pointer; transition: color var(--t-base), border-color var(--t-base), background var(--t-base); } .dlToggleBtn:hover { color: var(--text-secondary); border-color: var(--border-strong); background: var(--bg-raised); } .dlDropdown { position: absolute; top: calc(100% + 4px); right: 0; background: var(--bg-raised); border: 1px solid var(--border-base); border-radius: var(--radius-lg); padding: var(--sp-1); display: flex; flex-direction: column; gap: 1px; min-width: 180px; box-shadow: 0 4px 16px rgba(0,0,0,0.4); animation: scaleIn 0.1s ease both; transform-origin: top right; z-index: 50; } /* ── Jump to chapter (in list header) ── */ .jumpWrap { position: relative; } .jumpToggle { padding: 4px 8px; border-radius: var(--radius-sm); border: 1px solid var(--border-dim); background: none; color: var(--text-faint); font-family: var(--font-ui); font-size: var(--text-xs); letter-spacing: var(--tracking-wide); cursor: pointer; white-space: nowrap; transition: color var(--t-base), border-color var(--t-base), background var(--t-base); } .jumpToggle:hover { color: var(--text-muted); border-color: var(--border-strong); background: var(--bg-raised); } .jumpRow { display: flex; align-items: center; gap: 4px; } .jumpInput { width: 72px; padding: 4px 8px; background: var(--bg-raised); border: 1px solid var(--border-focus); border-radius: var(--radius-sm); color: var(--text-secondary); font-family: var(--font-ui); font-size: var(--text-xs); outline: none; } .jumpCancel { display: flex; align-items: center; justify-content: center; width: 22px; height: 22px; border-radius: var(--radius-sm); color: var(--text-faint); font-size: 10px; background: none; transition: color var(--t-base), background var(--t-base); } .jumpCancel:hover { color: var(--text-muted); background: var(--bg-raised); } /* ── View mode toggle ── */ .viewToggleBtn { display: flex; align-items: center; justify-content: center; width: 26px; height: 26px; border-radius: var(--radius-sm); border: 1px solid transparent; color: var(--text-faint); background: none; cursor: pointer; transition: color var(--t-base), background var(--t-base), border-color var(--t-base); } .viewToggleBtn:hover { color: var(--text-muted); background: var(--bg-raised); border-color: var(--border-dim); } .viewToggleActive { color: var(--accent-fg) !important; background: var(--accent-muted) !important; border-color: var(--accent-dim) !important; } /* ── Chapter grid ── */ .grid { flex: 1; overflow-y: auto; padding: var(--sp-3) var(--sp-4); display: grid; grid-template-columns: repeat(auto-fill, minmax(48px, 1fr)); gap: 5px; align-content: start; } .gridCell { position: relative; aspect-ratio: 1; border-radius: var(--radius-sm); border: 1px solid var(--border-strong); background: var(--bg-raised); cursor: pointer; display: flex; align-items: center; justify-content: center; overflow: hidden; transition: border-color var(--t-fast), background var(--t-fast), transform var(--t-fast); } .gridCell:hover { border-color: var(--accent); background: var(--bg-overlay); transform: scale(1.04); z-index: 1; } /* Unread — subtle, inviting */ .gridCellNum { font-family: var(--font-ui); font-size: var(--text-2xs); font-weight: var(--weight-medium); letter-spacing: var(--tracking-tight); color: var(--text-secondary); line-height: 1; position: relative; z-index: 1; } /* Read — dimmed, clearly consumed */ .gridCellRead { background: var(--bg-base); border-color: var(--border-dim); } .gridCellRead .gridCellNum { color: var(--text-faint); } .gridCellRead::after { content: ""; position: absolute; inset: 0; background: linear-gradient(135deg, transparent 60%, rgba(var(--accent-rgb, 100 130 255) / 0.08) 100%); pointer-events: none; } /* In-progress progress fill bar (width set inline) */ .gridCellProgress { position: absolute; bottom: 0; left: 0; height: 2px; background: var(--accent); border-radius: 0 0 var(--radius-sm) var(--radius-sm); pointer-events: none; z-index: 2; } /* In-progress — accent highlight on bottom edge */ .gridCellInProgress { border-color: var(--accent-dim); background: var(--bg-raised); } .gridCellInProgress .gridCellNum { color: var(--accent-fg); } .gridCellInProgress::before { content: ""; position: absolute; bottom: 0; left: 0; right: 0; height: 3px; background: var(--accent); border-radius: 0 0 var(--radius-sm) var(--radius-sm); } /* Read indicator dot (top-right corner) */ .gridCellDot { position: absolute; top: 3px; right: 3px; width: 4px; height: 4px; border-radius: 50%; background: var(--text-faint); } /* Bookmark indicator dot */ .gridCellBookmarked { border-color: var(--accent-dim); } .gridCellBookmarkDot { position: absolute; top: 3px; left: 3px; width: 4px; height: 4px; border-radius: 50%; background: var(--accent); } /* Spinner overlay for enqueueing */ .gridCellSpinner { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; background: rgba(0,0,0,0.3); color: var(--text-faint); } /* Skeleton for grid loading state */ .gridCellSkeleton { aspect-ratio: 1; border-radius: var(--radius-sm); background: var(--bg-raised); border: 1px solid var(--border-dim); display: flex; align-items: center; justify-content: center; padding: var(--sp-2); } /* ── Folder picker (icon button in list header) ──────────────────────── */ .folderPickerWrap { position: relative; } /* Matches dlToggleBtn / viewToggleBtn style */ .folderPickerBtn { display: flex; align-items: center; justify-content: center; width: 28px; height: 28px; border-radius: var(--radius-md); border: 1px solid var(--border-dim); color: var(--text-muted); background: none; cursor: pointer; transition: color var(--t-base), border-color var(--t-base), background var(--t-base); } .folderPickerBtn:hover { color: var(--text-secondary); border-color: var(--border-strong); background: var(--bg-raised); } /* Active state when manga is assigned to at least one folder */ .folderPickerBtnActive { color: var(--accent-fg); border-color: var(--accent-dim); background: var(--accent-muted); } .folderPickerBtnActive:hover { background: var(--accent-muted); border-color: var(--accent); color: var(--accent-fg); } .folderPickerMenu { position: absolute; top: calc(100% + 4px); right: 0; min-width: 180px; background: var(--bg-raised); border: 1px solid var(--border-base); border-radius: var(--radius-md); padding: var(--sp-1); z-index: 200; box-shadow: 0 8px 24px rgba(0,0,0,0.5); animation: scaleIn 0.1s ease both; transform-origin: top right; } .folderPickerEmpty { padding: var(--sp-2) var(--sp-3); font-size: var(--text-xs); color: var(--text-faint); } .folderPickerItem { display: flex; align-items: center; gap: var(--sp-2); width: 100%; padding: 6px var(--sp-3); border-radius: var(--radius-sm); font-size: var(--text-xs); color: var(--text-secondary); background: none; border: none; cursor: pointer; text-align: left; transition: background var(--t-fast), color var(--t-fast); } .folderPickerItem:hover { background: var(--bg-overlay); } .folderPickerItemActive { color: var(--accent-fg); } .folderPickerItemCheck { width: 12px; font-size: var(--text-xs); color: var(--accent-fg); flex-shrink: 0; } .folderPickerDivider { height: 1px; background: var(--border-dim); margin: var(--sp-1) var(--sp-2); } .folderPickerCreate { display: flex; align-items: center; gap: var(--sp-1); padding: 4px var(--sp-2); } .folderPickerInput { flex: 1; background: var(--bg-overlay); border: 1px solid var(--border-strong); border-radius: var(--radius-sm); padding: 4px 8px; font-size: var(--text-xs); color: var(--text-secondary); outline: none; min-width: 0; } .folderPickerInput:focus { border-color: var(--border-focus); } .folderPickerConfirm { font-family: var(--font-ui); font-size: var(--text-2xs); letter-spacing: var(--tracking-wide); padding: 4px 8px; border-radius: var(--radius-sm); border: 1px solid var(--accent-dim); background: var(--accent-muted); color: var(--accent-fg); cursor: pointer; flex-shrink: 0; } .folderPickerConfirm:disabled { opacity: 0.4; cursor: default; } .folderPickerCancel { display: flex; align-items: center; justify-content: center; width: 22px; height: 22px; border-radius: var(--radius-sm); border: 1px solid transparent; background: none; color: var(--text-faint); cursor: pointer; flex-shrink: 0; transition: color var(--t-base), border-color var(--t-base); } .folderPickerCancel:hover { color: var(--text-muted); border-color: var(--border-dim); } .folderPickerNewBtn { width: 100%; padding: 6px var(--sp-3); border-radius: var(--radius-sm); font-size: var(--text-xs); color: var(--text-faint); background: none; border: none; cursor: pointer; text-align: left; transition: color var(--t-fast), background var(--t-fast); } .folderPickerNewBtn:hover { color: var(--text-secondary); background: var(--bg-overlay); } /* ── Delete all downloads button (in details section) ─────────────────── */ .deleteAllBtn { display: flex; align-items: center; gap: var(--sp-2); width: 100%; padding: 6px var(--sp-2); border-radius: var(--radius-md); font-family: var(--font-ui); font-size: var(--text-xs); letter-spacing: var(--tracking-wide); color: var(--text-faint); background: none; border: 1px solid var(--border-dim); cursor: pointer; text-align: left; transition: color var(--t-base), border-color var(--t-base), background var(--t-base); } .deleteAllBtn:hover:not(:disabled) { color: var(--color-error); border-color: color-mix(in srgb, var(--color-error) 40%, transparent); background: var(--color-error-bg, color-mix(in srgb, var(--color-error) 8%, transparent)); } .deleteAllBtn:disabled { opacity: 0.4; cursor: default; } /* ── Danger item in dl dropdown ─────────────────────────────────────── */ .dlItemDanger { color: var(--color-error) !important; } .dlItemDanger:hover:not(:disabled) { background: var(--color-error-bg) !important; } /* ── Download dropdown extended: Next-N quick buttons + range picker ─────── */ .dlSectionLabel { padding: 6px var(--sp-3) 4px; font-family: var(--font-ui); font-size: var(--text-2xs); color: var(--text-faint); letter-spacing: var(--tracking-wider); text-transform: uppercase; } .dlNextRow { display: flex; gap: 4px; padding: 2px var(--sp-2) var(--sp-2); } /* Clean pill-style buttons — label + count inline, no column stacking */ .dlNextBtn { flex: 1; display: flex; align-items: center; justify-content: center; gap: 5px; padding: 5px 6px; border-radius: var(--radius-md); border: 1px solid var(--border-dim); background: var(--bg-overlay); color: var(--text-secondary); font-family: var(--font-ui); font-size: var(--text-xs); letter-spacing: var(--tracking-wide); cursor: pointer; transition: background var(--t-fast), border-color var(--t-fast), color var(--t-fast); white-space: nowrap; } .dlNextBtn:hover:not(:disabled) { background: var(--accent-muted); border-color: var(--accent-dim); color: var(--accent-fg); } .dlNextBtn:hover:not(:disabled) .dlNextSub { color: var(--accent-fg); opacity: 0.7; } .dlNextBtn:disabled { opacity: 0.3; cursor: default; } /* The "(n new)" count badge — sits inline as a dimmed suffix */ .dlNextSub { font-size: var(--text-2xs); color: var(--text-faint); font-variant-numeric: tabular-nums; transition: color var(--t-fast), opacity var(--t-fast); } .dlDivider { height: 1px; background: var(--border-dim); margin: var(--sp-1) var(--sp-2); } /* Range row: swaps in at the same height as dlItem — no layout shift */ .dlRangeRow { display: flex; align-items: center; gap: 4px; padding: 7px var(--sp-2) 7px var(--sp-2); border-radius: var(--radius-md); min-height: 0; } .dlRangeBack { display: flex; align-items: center; justify-content: center; flex-shrink: 0; width: 20px; height: 20px; border-radius: var(--radius-sm); border: 1px solid var(--border-dim); background: none; color: var(--text-faint); font-size: 14px; line-height: 1; cursor: pointer; transition: color var(--t-fast), border-color var(--t-fast), background var(--t-fast); } .dlRangeBack:hover { color: var(--text-muted); border-color: var(--border-strong); background: var(--bg-overlay); } .dlRangeInput { flex: 1; min-width: 0; padding: 4px 8px; background: var(--bg-overlay); border: 1px solid var(--border-strong); border-radius: var(--radius-sm); color: var(--text-secondary); font-family: var(--font-ui); font-size: var(--text-xs); outline: none; text-align: center; transition: border-color var(--t-base); } .dlRangeInput:focus { border-color: var(--border-focus); } .dlRangeInput::placeholder { color: var(--text-faint); } .dlRangeSep { color: var(--text-faint); font-size: var(--text-xs); flex-shrink: 0; } .dlRangeGo { padding: 4px 10px; border-radius: var(--radius-sm); border: 1px solid var(--accent-dim); background: var(--accent-muted); color: var(--accent-fg); font-family: var(--font-ui); font-size: var(--text-xs); letter-spacing: var(--tracking-wide); cursor: pointer; flex-shrink: 0; transition: background var(--t-base); white-space: nowrap; } .dlRangeGo:hover:not(:disabled) { background: var(--accent-dim); } .dlRangeGo:disabled { opacity: 0.3; cursor: default; }