global.css 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880
  1. html,
  2. body {
  3. width: 100%;
  4. height: 100%;
  5. overflow: hidden;
  6. }
  7. #app {
  8. width: 100%;
  9. height: 100%;
  10. }
  11. /* transition fade-slide - 已移至 animations.css */
  12. /* 自定义滚动条样式 - 优化版 */
  13. .cus-scroll {
  14. overflow: auto;
  15. &::-webkit-scrollbar {
  16. width: 8px;
  17. height: 8px;
  18. }
  19. }
  20. .cus-scroll-x {
  21. overflow-x: auto;
  22. &::-webkit-scrollbar {
  23. width: 0;
  24. height: 8px;
  25. }
  26. }
  27. .cus-scroll-y {
  28. overflow-y: auto;
  29. &::-webkit-scrollbar {
  30. width: 8px;
  31. height: 0;
  32. }
  33. }
  34. .cus-scroll,
  35. .cus-scroll-x,
  36. .cus-scroll-y {
  37. &::-webkit-scrollbar-track {
  38. background: transparent;
  39. border-radius: var(--radius-sm);
  40. }
  41. &::-webkit-scrollbar-thumb {
  42. background: var(--gray-300);
  43. border-radius: var(--radius-sm);
  44. transition: background var(--transition-fast);
  45. }
  46. &::-webkit-scrollbar-thumb:hover {
  47. background: var(--gray-400);
  48. }
  49. &::-webkit-scrollbar-corner {
  50. background: transparent;
  51. }
  52. }
  53. /* Naive Popover 会 Teleport 到 body,下列样式放全局,避免侧栏折叠菜单弹层圆角被 scoped 样式漏掉。 */
  54. body .n-popover__content.forge-side-menu-popover-content,
  55. body .n-popover:has(.forge-side-menu-flyout) .n-popover__content {
  56. padding: 0 !important;
  57. border-radius: 8px !important;
  58. background: var(--side-menu-bg-color) !important;
  59. overflow: hidden !important;
  60. }
  61. body .n-popover:has(.forge-side-menu-flyout) {
  62. border-radius: 8px !important;
  63. background: var(--side-menu-bg-color) !important;
  64. overflow: hidden !important;
  65. }
  66. /* DataTable 分页分隔线放在整行 wrapper 上,避免只跟随分页内容宽度。 */
  67. .n-data-table__pagination {
  68. width: 100%;
  69. margin: 0 !important;
  70. padding: 12px 16px;
  71. border-top: 1px solid var(--border-light);
  72. }
  73. .n-data-table__pagination > .n-pagination {
  74. width: 100%;
  75. padding: 0;
  76. border-top: 0 !important;
  77. }
  78. /* 暗色模式滚动条 */
  79. .dark .cus-scroll,
  80. .dark .cus-scroll-x,
  81. .dark .cus-scroll-y {
  82. &::-webkit-scrollbar-thumb {
  83. background: var(--gray-600);
  84. }
  85. &::-webkit-scrollbar-thumb:hover {
  86. background: var(--gray-500);
  87. }
  88. }
  89. /* 切换主题的动画效果 */
  90. ::view-transition-old(root),
  91. ::view-transition-new(root) {
  92. animation: none;
  93. mix-blend-mode: normal;
  94. }
  95. ::view-transition-old(root),
  96. .dark::view-transition-new(root) {
  97. z-index: 9999;
  98. }
  99. /* ═══════════════════════════════════════
  100. * 通用工具类 - Utility Classes
  101. * ═══════════════════════════════════════ */
  102. /* 玻璃态效果 */
  103. .glass {
  104. background: rgba(255, 255, 255, 0.9);
  105. backdrop-filter: blur(10px);
  106. -webkit-backdrop-filter: blur(10px);
  107. border: 1px solid rgba(255, 255, 255, 0.2);
  108. }
  109. .dark .glass {
  110. background: rgba(30, 41, 59, 0.9);
  111. border-color: rgba(255, 255, 255, 0.1);
  112. }
  113. /* 卡片增强效果 */
  114. .card-enhanced {
  115. background: var(--bg-primary);
  116. border-radius: var(--radius-card);
  117. box-shadow: var(--shadow-card);
  118. transition: all var(--transition);
  119. }
  120. .card-enhanced:hover {
  121. box-shadow: var(--shadow-card-hover);
  122. transform: translateY(-2px);
  123. }
  124. /* 按钮增强效果 */
  125. .btn-enhanced {
  126. position: relative;
  127. overflow: hidden;
  128. }
  129. .btn-enhanced::after {
  130. content: '';
  131. position: absolute;
  132. inset: 0;
  133. background: radial-gradient(
  134. circle at var(--mouse-x, 50%) var(--mouse-y, 50%),
  135. rgba(255, 255, 255, 0.1) 0%,
  136. transparent 80%
  137. );
  138. opacity: 0;
  139. transition: opacity var(--transition);
  140. pointer-events: none;
  141. }
  142. .btn-enhanced:hover::after {
  143. opacity: 1;
  144. }
  145. /* 输入框增强效果 */
  146. .input-enhanced {
  147. transition: all var(--transition);
  148. border-color: var(--border-default);
  149. }
  150. .input-enhanced:hover {
  151. border-color: var(--border-strong);
  152. }
  153. .input-enhanced:focus {
  154. border-color: var(--primary-500);
  155. box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
  156. }
  157. /* 文字截断 */
  158. .text-ellipsis {
  159. overflow: hidden;
  160. text-overflow: ellipsis;
  161. white-space: nowrap;
  162. }
  163. .text-ellipsis-2 {
  164. overflow: hidden;
  165. text-overflow: ellipsis;
  166. display: -webkit-box;
  167. -webkit-line-clamp: 2;
  168. -webkit-box-orient: vertical;
  169. }
  170. .text-ellipsis-3 {
  171. overflow: hidden;
  172. text-overflow: ellipsis;
  173. display: -webkit-box;
  174. -webkit-line-clamp: 3;
  175. -webkit-box-orient: vertical;
  176. }
  177. /* 加载遮罩 */
  178. .loading-overlay {
  179. position: absolute;
  180. inset: 0;
  181. background: rgba(255, 255, 255, 0.8);
  182. display: flex;
  183. align-items: center;
  184. justify-content: center;
  185. z-index: 10;
  186. backdrop-filter: blur(2px);
  187. }
  188. .dark .loading-overlay {
  189. background: rgba(15, 23, 42, 0.8);
  190. }
  191. /* 悬浮提示 */
  192. .tooltip-wrapper {
  193. position: relative;
  194. }
  195. .tooltip {
  196. position: absolute;
  197. bottom: 100%;
  198. left: 50%;
  199. transform: translateX(-50%) translateY(-8px);
  200. padding: var(--space-2) var(--space-3);
  201. background: var(--gray-900);
  202. color: white;
  203. border-radius: var(--radius-sm);
  204. font-size: var(--font-size-xs);
  205. white-space: nowrap;
  206. opacity: 0;
  207. pointer-events: none;
  208. transition: all var(--transition-fast);
  209. z-index: var(--z-tooltip);
  210. }
  211. .tooltip-wrapper:hover .tooltip {
  212. opacity: 1;
  213. transform: translateX(-50%) translateY(-4px);
  214. }
  215. /* 响应式容器 */
  216. .container {
  217. width: 100%;
  218. max-width: var(--content-max-width);
  219. margin: 0 auto;
  220. padding: 0 var(--content-padding);
  221. }
  222. /* Grid系统 */
  223. .grid {
  224. display: grid;
  225. gap: var(--space-4);
  226. }
  227. .grid-2 {
  228. grid-template-columns: repeat(2, 1fr);
  229. }
  230. .grid-3 {
  231. grid-template-columns: repeat(3, 1fr);
  232. }
  233. .grid-4 {
  234. grid-template-columns: repeat(4, 1fr);
  235. }
  236. @media (max-width: 768px) {
  237. .grid-2,
  238. .grid-3,
  239. .grid-4 {
  240. grid-template-columns: 1fr;
  241. }
  242. }
  243. /* 分隔线 */
  244. .divider {
  245. height: 1px;
  246. background: var(--border-default);
  247. margin: var(--space-4) 0;
  248. }
  249. .divider-vertical {
  250. width: 1px;
  251. background: var(--border-default);
  252. margin: 0 var(--space-4);
  253. }
  254. /* 徽章 */
  255. .badge {
  256. display: inline-flex;
  257. align-items: center;
  258. padding: var(--space-1) var(--space-2);
  259. border-radius: var(--radius-full);
  260. font-size: var(--font-size-xs);
  261. font-weight: var(--font-weight-medium);
  262. line-height: 1;
  263. }
  264. .badge-primary {
  265. background: var(--primary-100);
  266. color: var(--primary-700);
  267. }
  268. .badge-success {
  269. background: var(--success-100);
  270. color: var(--success-700);
  271. }
  272. .badge-warning {
  273. background: var(--warning-100);
  274. color: var(--warning-700);
  275. }
  276. .badge-error {
  277. background: var(--error-100);
  278. color: var(--error-700);
  279. }
  280. /* 暗色模式适配 */
  281. .dark .badge-primary {
  282. background: var(--primary-900);
  283. color: var(--primary-100);
  284. }
  285. .dark .badge-success {
  286. background: var(--success-900);
  287. color: var(--success-100);
  288. }
  289. .dark .badge-warning {
  290. background: var(--warning-900);
  291. color: var(--warning-100);
  292. }
  293. .dark .badge-error {
  294. background: var(--error-900);
  295. color: var(--error-100);
  296. }
  297. ::view-transition-new(root),
  298. .dark::view-transition-old(root) {
  299. z-index: 9999;
  300. }
  301. /* ═══════════════════════════════════════
  302. * 页面级布局工具类 - Page Layout
  303. * ═══════════════════════════════════════ */
  304. /* 页面容器 */
  305. .page-wrapper {
  306. display: flex;
  307. flex-direction: column;
  308. height: 100%;
  309. background: var(--bg-page, var(--gray-100));
  310. overflow: hidden;
  311. }
  312. /* 页面头部(带标题 + 操作按钮) */
  313. .page-header {
  314. display: flex;
  315. align-items: center;
  316. justify-content: space-between;
  317. padding: 14px 20px;
  318. background: var(--bg-primary);
  319. border-bottom: 1px solid var(--border-light);
  320. flex-shrink: 0;
  321. }
  322. .page-header-left {
  323. display: flex;
  324. align-items: center;
  325. gap: var(--space-3);
  326. }
  327. .page-header-title {
  328. font-size: var(--font-size-base);
  329. font-weight: var(--font-weight-semibold);
  330. color: var(--text-primary);
  331. line-height: 1.4;
  332. }
  333. .page-header-desc {
  334. font-size: var(--font-size-sm);
  335. color: var(--text-tertiary);
  336. margin-top: 2px;
  337. }
  338. .page-header-actions {
  339. display: flex;
  340. align-items: center;
  341. gap: var(--space-2);
  342. }
  343. /* 卡片容器 */
  344. .page-card {
  345. background: var(--bg-primary);
  346. border-radius: var(--radius-card);
  347. border: 1px solid var(--border-light);
  348. box-shadow: var(--shadow-xs);
  349. overflow: hidden;
  350. }
  351. .page-card + .page-card {
  352. margin-top: var(--space-4);
  353. }
  354. /* 内容滚动区 */
  355. .page-content {
  356. flex: 1;
  357. overflow-y: auto;
  358. padding: var(--space-4);
  359. }
  360. /* ═══════════════════════════════════════
  361. * 状态标签 - Status Tags
  362. * ═══════════════════════════════════════ */
  363. .status-tag {
  364. display: inline-flex;
  365. align-items: center;
  366. gap: 4px;
  367. padding: 2px 10px;
  368. border-radius: var(--radius-full);
  369. font-size: var(--font-size-xs);
  370. font-weight: var(--font-weight-medium);
  371. line-height: 1.6;
  372. white-space: nowrap;
  373. }
  374. .status-tag::before {
  375. content: '';
  376. display: inline-block;
  377. width: 6px;
  378. height: 6px;
  379. border-radius: 50%;
  380. background: currentColor;
  381. opacity: 0.85;
  382. }
  383. .status-tag.success {
  384. background: var(--success-50);
  385. color: var(--success-700);
  386. border: 1px solid var(--success-200);
  387. }
  388. .status-tag.warning {
  389. background: var(--warning-50);
  390. color: var(--warning-700);
  391. border: 1px solid var(--warning-200);
  392. }
  393. .status-tag.error,
  394. .status-tag.danger {
  395. background: var(--error-50);
  396. color: var(--error-700);
  397. border: 1px solid var(--error-200);
  398. }
  399. .status-tag.info {
  400. background: var(--info-50);
  401. color: var(--info-700);
  402. border: 1px solid var(--info-200);
  403. }
  404. .status-tag.default {
  405. background: var(--gray-100);
  406. color: var(--text-secondary);
  407. border: 1px solid var(--border-default);
  408. }
  409. .dark .status-tag.success {
  410. background: rgba(21, 128, 61, 0.15);
  411. color: #4ade80;
  412. border-color: rgba(21, 128, 61, 0.3);
  413. }
  414. .dark .status-tag.warning {
  415. background: rgba(180, 83, 9, 0.15);
  416. color: #fcd34d;
  417. border-color: rgba(180, 83, 9, 0.3);
  418. }
  419. .dark .status-tag.error,
  420. .dark .status-tag.danger {
  421. background: rgba(185, 28, 28, 0.15);
  422. color: #f87171;
  423. border-color: rgba(185, 28, 28, 0.3);
  424. }
  425. .dark .status-tag.info {
  426. background: rgba(3, 105, 161, 0.15);
  427. color: #38bdf8;
  428. border-color: rgba(3, 105, 161, 0.3);
  429. }
  430. .dark .status-tag.default {
  431. background: rgba(255, 255, 255, 0.06);
  432. color: var(--text-secondary);
  433. border-color: var(--border-default);
  434. }
  435. /* ═══════════════════════════════════════
  436. * 表格操作列 - Table Action
  437. * ═══════════════════════════════════════ */
  438. /* 操作列容器 */
  439. .table-actions {
  440. display: flex;
  441. align-items: center;
  442. gap: 4px;
  443. flex-wrap: nowrap;
  444. }
  445. /* 操作文字链接 */
  446. .table-action-link {
  447. display: inline-flex;
  448. align-items: center;
  449. gap: 3px;
  450. font-size: var(--font-size-sm);
  451. color: var(--primary-600);
  452. cursor: pointer;
  453. padding: 2px 6px;
  454. border-radius: var(--radius-sm);
  455. transition: all var(--transition-fast);
  456. text-decoration: none;
  457. line-height: 1.5;
  458. white-space: nowrap;
  459. border: 1px solid transparent;
  460. }
  461. .table-action-link:hover {
  462. color: var(--primary-700);
  463. background: var(--primary-50);
  464. border-color: var(--primary-200);
  465. }
  466. .table-action-link.danger {
  467. color: var(--error-600);
  468. }
  469. .table-action-link.danger:hover {
  470. color: var(--error-700);
  471. background: var(--error-50);
  472. border-color: var(--error-200);
  473. }
  474. .table-action-link.warning {
  475. color: var(--warning-600);
  476. }
  477. .table-action-link.warning:hover {
  478. color: var(--warning-700);
  479. background: var(--warning-50);
  480. border-color: var(--warning-200);
  481. }
  482. .table-action-link[disabled] {
  483. opacity: 0.45;
  484. cursor: not-allowed;
  485. pointer-events: none;
  486. }
  487. /* 操作列分隔符 */
  488. .table-action-divider {
  489. display: inline-block;
  490. width: 1px;
  491. height: 12px;
  492. margin: 0 2px;
  493. /*vertical-align: middle;*/
  494. }
  495. /* ═══════════════════════════════════════
  496. * 表单区域 - Form Section
  497. * ═══════════════════════════════════════ */
  498. /* 表单分组标题 */
  499. .form-section-title {
  500. font-size: var(--font-size-sm);
  501. font-weight: var(--font-weight-semibold);
  502. color: var(--text-secondary);
  503. padding: var(--space-3) 0 var(--space-2) 0;
  504. border-bottom: 1px solid var(--border-light);
  505. margin-bottom: var(--space-4);
  506. text-transform: uppercase;
  507. letter-spacing: 0.05em;
  508. }
  509. /* 必填标记统一覆盖 */
  510. .required-mark::after {
  511. content: ' *';
  512. color: var(--error-500);
  513. }
  514. /* ═══════════════════════════════════════
  515. * 空状态 - Empty State
  516. * ═══════════════════════════════════════ */
  517. .empty-state-wrapper {
  518. display: flex;
  519. flex-direction: column;
  520. align-items: center;
  521. justify-content: center;
  522. padding: 60px 20px;
  523. color: var(--text-tertiary);
  524. user-select: none;
  525. }
  526. .empty-state-icon {
  527. font-size: 56px;
  528. margin-bottom: 12px;
  529. opacity: 0.4;
  530. }
  531. .empty-state-title {
  532. font-size: var(--font-size-base);
  533. font-weight: var(--font-weight-medium);
  534. color: var(--text-secondary);
  535. margin-bottom: 6px;
  536. }
  537. .empty-state-desc {
  538. font-size: var(--font-size-sm);
  539. color: var(--text-tertiary);
  540. text-align: center;
  541. max-width: 300px;
  542. line-height: 1.6;
  543. }
  544. /* ═══════════════════════════════════════
  545. * 描述列表 - Description List
  546. * ═══════════════════════════════════════ */
  547. .desc-list {
  548. display: grid;
  549. grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
  550. gap: 0;
  551. border: 1px solid var(--border-light);
  552. border-radius: var(--radius-lg);
  553. overflow: hidden;
  554. }
  555. .desc-item {
  556. display: flex;
  557. border-bottom: 1px solid var(--border-light);
  558. border-right: 1px solid var(--border-light);
  559. }
  560. .desc-item:nth-child(2n) {
  561. border-right: none;
  562. }
  563. .desc-label {
  564. flex-shrink: 0;
  565. width: 110px;
  566. padding: 10px 14px;
  567. background: var(--bg-secondary);
  568. font-size: var(--font-size-sm);
  569. font-weight: var(--font-weight-medium);
  570. color: var(--text-secondary);
  571. display: flex;
  572. align-items: center;
  573. }
  574. .desc-value {
  575. flex: 1;
  576. padding: 10px 14px;
  577. font-size: var(--font-size-sm);
  578. color: var(--text-primary);
  579. display: flex;
  580. align-items: center;
  581. word-break: break-all;
  582. }
  583. /* ═══════════════════════════════════════
  584. * 通用Flex布局辅助类
  585. * ═══════════════════════════════════════ */
  586. .flex-center {
  587. display: flex;
  588. align-items: center;
  589. justify-content: center;
  590. }
  591. .flex-between {
  592. display: flex;
  593. align-items: center;
  594. justify-content: space-between;
  595. }
  596. .flex-start {
  597. display: flex;
  598. align-items: center;
  599. justify-content: flex-start;
  600. }
  601. .gap-1 {
  602. gap: var(--space-1);
  603. }
  604. .gap-2 {
  605. gap: var(--space-2);
  606. }
  607. .gap-3 {
  608. gap: var(--space-3);
  609. }
  610. .gap-4 {
  611. gap: var(--space-4);
  612. }
  613. /* ═══════════════════════════════════════
  614. * 全局 n-tree 精品化样式 - Premium Tree
  615. * ═══════════════════════════════════════ */
  616. .n-tree {
  617. background: transparent;
  618. }
  619. .n-tree-node {
  620. padding: 1px 0;
  621. }
  622. .n-tree-node-content {
  623. position: relative;
  624. min-height: 36px;
  625. padding: 4px 10px 4px 15px;
  626. border-radius: 8px;
  627. transition:
  628. background-color 0.18s ease,
  629. color 0.18s ease;
  630. }
  631. .n-tree-node-content:hover {
  632. background-color: color-mix(in srgb, var(--primary-color, #165dff) 6%, transparent);
  633. }
  634. /* 修复选中态: 干掉 n-tree-node 的背景,统一由 content 承载 */
  635. .n-tree-node--selected,
  636. .n-tree-node--selected:hover {
  637. background-color: transparent !important;
  638. }
  639. .n-tree-node--selected > .n-tree-node-content {
  640. background: color-mix(in srgb, var(--primary-color, #165dff) 8%, transparent);
  641. color: #0f172a;
  642. font-weight: 600;
  643. }
  644. /* 展开/折叠图标 */
  645. .n-tree-node-switcher {
  646. width: 20px;
  647. height: 20px;
  648. color: #94a3b8;
  649. transition:
  650. transform 0.2s ease,
  651. color 0.2s ease;
  652. }
  653. .n-tree-node-switcher:hover {
  654. color: var(--primary-color, #165dff);
  655. }
  656. /* 缩进线 */
  657. .n-tree-node-indent {
  658. width: 18px;
  659. }
  660. /* 树容器内滚动条 */
  661. .n-tree .n-tree-wrapper::-webkit-scrollbar {
  662. width: 4px;
  663. }
  664. .n-tree .n-tree-wrapper::-webkit-scrollbar-thumb {
  665. background: #cbd5e1;
  666. border-radius: 2px;
  667. }
  668. /* 暗色模式 */
  669. .dark .n-tree-node-content:hover {
  670. background-color: color-mix(in srgb, var(--primary-color, #165dff) 10%, transparent);
  671. }
  672. .dark .n-tree-node--selected > .n-tree-node-content {
  673. background: color-mix(in srgb, var(--primary-color, #165dff) 16%, transparent);
  674. }
  675. .dark .n-tree-node-switcher {
  676. color: #64748b;
  677. }
  678. .dark .n-tree-node-switcher:hover {
  679. color: var(--primary-color, #4080ff);
  680. }
  681. /* ═══════════════════════════════════════
  682. * 表格行渐进入场动画 — Staggered Row Reveal
  683. * ═══════════════════════════════════════ */
  684. @keyframes table-row-enter {
  685. from {
  686. opacity: 0;
  687. transform: translateY(4px);
  688. }
  689. to {
  690. opacity: 1;
  691. transform: translateY(0);
  692. }
  693. }
  694. .n-data-table-tr {
  695. animation: table-row-enter 0.28s cubic-bezier(0.16, 1, 0.3, 1) backwards;
  696. }
  697. .n-data-table-tr:nth-child(1) {
  698. animation-delay: 0.01s;
  699. }
  700. .n-data-table-tr:nth-child(2) {
  701. animation-delay: 0.03s;
  702. }
  703. .n-data-table-tr:nth-child(3) {
  704. animation-delay: 0.05s;
  705. }
  706. .n-data-table-tr:nth-child(4) {
  707. animation-delay: 0.07s;
  708. }
  709. .n-data-table-tr:nth-child(5) {
  710. animation-delay: 0.09s;
  711. }
  712. .n-data-table-tr:nth-child(6) {
  713. animation-delay: 0.1s;
  714. }
  715. .n-data-table-tr:nth-child(7) {
  716. animation-delay: 0.12s;
  717. }
  718. .n-data-table-tr:nth-child(8) {
  719. animation-delay: 0.13s;
  720. }
  721. .n-data-table-tr:nth-child(9) {
  722. animation-delay: 0.15s;
  723. }
  724. .n-data-table-tr:nth-child(10) {
  725. animation-delay: 0.16s;
  726. }
  727. .n-data-table-tr:nth-child(11) {
  728. animation-delay: 0.17s;
  729. }
  730. .n-data-table-tr:nth-child(12) {
  731. animation-delay: 0.18s;
  732. }
  733. .n-data-table-tr:nth-child(13) {
  734. animation-delay: 0.19s;
  735. }
  736. .n-data-table-tr:nth-child(14) {
  737. animation-delay: 0.2s;
  738. }
  739. .n-data-table-tr:nth-child(15) {
  740. animation-delay: 0.21s;
  741. }
  742. .n-data-table-tr:nth-child(16) {
  743. animation-delay: 0.22s;
  744. }
  745. .n-data-table-tr:nth-child(17) {
  746. animation-delay: 0.23s;
  747. }
  748. .n-data-table-tr:nth-child(18) {
  749. animation-delay: 0.24s;
  750. }
  751. .n-data-table-tr:nth-child(19) {
  752. animation-delay: 0.25s;
  753. }
  754. .n-data-table-tr:nth-child(20) {
  755. animation-delay: 0.26s;
  756. }