.tr { transition: all 0.2s ease; cursor: pointer; &:hover { // hover 作用到每个 td,避免 odd 行背景覆盖 .td { background: rgba(66, 133, 244, 0.08); } .odd { background: rgba(66, 133, 244, 0.08); } } } .th { height: 48px; background: var(--color-background); top: 0; font-size: 0.85em; font-weight: 600; user-select: none; text-align: center; text-transform: uppercase; letter-spacing: 0.5px; color: var(--color-text-secondary); border-bottom: 2px solid var(--bg-near-transparent); position: sticky; z-index: 20; box-shadow: 0 1px 0 rgba(0, 0, 0, 0.06); &:hover { color: var(--color-text-highlight); } } .btnSection { button { margin-right: 15px; } } .break { word-wrap: break-word; word-break: break-all; align-items: center; text-align: left; } .td { padding: 12px 8px; font-size: 0.875em; min-width: 9em; cursor: pointer; text-align: left; vertical-align: middle; white-space: nowrap; border-bottom: 1px solid var(--bg-near-transparent); transition: color 0.15s ease; &:hover { color: var(--color-text-highlight); } font-family: var(--font-normal); } .overlay { background: #444; } .modal { background-color: var(--bg-modal); } .table { border-collapse: separate; border-spacing: 0; width: 100%; background: var(--color-background); @media (max-width: 768px) { display: none; } } .tableWrapper { margin-top: 6px; border-radius: 12px; overflow: visible; // sticky 需要避免中间层成为 scroll container background: var(--color-background); box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08); @media (max-width: 768px) { background: transparent; box-shadow: none; } } .cardsView { display: none; @media (max-width: 768px) { display: block; padding: 0 4px; } } .mobileSortToolbar { display: flex; align-items: center; gap: 12px; padding: 0; margin-bottom: 20px; } .sortSelectWrapper { display: flex; align-items: center; gap: 10px; flex: 1; background: var(--color-bg-card); padding: 10px 16px; border-radius: 12px; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06); color: var(--color-focus-blue); position: relative; border: 1px solid var(--color-bg-card-border, rgba(0, 0, 0, 0.05)); select { position: absolute; top: 0; left: 0; width: 100%; height: 100%; opacity: 0; cursor: pointer; z-index: 2; } .selectedValue { flex: 1; display: flex; align-items: center; gap: 8px; font-size: 0.95rem; font-weight: 600; color: var(--color-text); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } } .selectArrow { opacity: 0.5; color: var(--color-text-secondary); flex-shrink: 0; } .sortDirBtn { background: var(--color-bg-card); border: 1px solid var(--color-bg-card-border, rgba(0, 0, 0, 0.05)); color: var(--color-focus-blue); display: flex; align-items: center; justify-content: center; width: 44px; height: 44px; border-radius: 12px; cursor: pointer; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06); transition: all 0.2s ease; &:active { transform: scale(0.95); background: var(--color-bg-secondary); } } .table thead tr:first-child th:first-child { border-top-left-radius: 12px; } .table thead tr:first-child th:last-child { border-top-right-radius: 12px; } .table tbody tr:last-child td:first-child { border-bottom-left-radius: 12px; } .table tbody tr:last-child td:last-child { border-bottom-right-radius: 12px; } .td.odd { background: var(--color-row-odd); } /* download upload td cells */ .center { min-width: 7em; text-align: center; } .sortIconContainer { display: inline-flex; align-items: center; justify-content: center; margin-left: 4px; width: 16px; height: 16px; opacity: 0.7; } .rotate180 { transform: rotate(180deg); }