index.scss 19 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078
  1. .position-page {
  2. --primary: #1768e5;
  3. --cyan: #20b7d8;
  4. --ink: #182338;
  5. --muted: #7c899d;
  6. min-height: 100%;
  7. padding: 22px;
  8. color: var(--ink);
  9. background: radial-gradient(
  10. circle at 8% 4%,
  11. rgba(32, 183, 216, 0.09),
  12. transparent 24%
  13. ),
  14. radial-gradient(circle at 92% 0%, rgba(23, 104, 229, 0.08), transparent 22%),
  15. #f3f6fb;
  16. }
  17. .action-toolbar {
  18. margin-bottom: 18px;
  19. padding: 12px 16px;
  20. display: flex;
  21. align-items: center;
  22. justify-content: flex-end;
  23. border: 1px solid #e0e7f1;
  24. border-radius: 8px;
  25. background: #fff;
  26. box-shadow: 0 6px 18px rgba(40, 67, 106, 0.05);
  27. }
  28. .view-toolbar {
  29. min-height: 54px;
  30. padding: 8px;
  31. justify-content: space-between;
  32. gap: 16px;
  33. }
  34. .toolbar-actions {
  35. display: flex;
  36. gap: 10px;
  37. flex-wrap: wrap;
  38. justify-content: flex-end;
  39. }
  40. .toolbar-actions ::v-deep .el-button + .el-button {
  41. margin-left: 0;
  42. }
  43. .metric-grid {
  44. margin: 0 0 18px;
  45. position: relative;
  46. display: grid;
  47. grid-template-columns: repeat(4, minmax(0, 1fr));
  48. gap: 16px;
  49. }
  50. .metric-card {
  51. min-height: 112px;
  52. padding: 19px;
  53. display: flex;
  54. align-items: center;
  55. gap: 15px;
  56. border: 1px solid rgba(211, 221, 235, 0.74);
  57. border-radius: 12px;
  58. background: rgba(255, 255, 255, 0.97);
  59. box-shadow: 0 12px 30px rgba(37, 67, 111, 0.08);
  60. transition: transform 0.25s ease, box-shadow 0.25s ease;
  61. }
  62. .metric-card:hover {
  63. transform: translateY(-3px);
  64. box-shadow: 0 18px 34px rgba(37, 67, 111, 0.13);
  65. }
  66. .metric-card span,
  67. .metric-card small {
  68. display: block;
  69. color: var(--muted);
  70. }
  71. .metric-card strong {
  72. margin: 4px 0;
  73. display: block;
  74. color: #17243a;
  75. font-size: 29px;
  76. }
  77. .metric-card small {
  78. font-size: 12px;
  79. }
  80. .metric-icon {
  81. width: 52px;
  82. height: 52px;
  83. flex: 0 0 52px;
  84. display: flex;
  85. align-items: center;
  86. justify-content: center;
  87. border-radius: 12px;
  88. font-size: 23px;
  89. }
  90. .metric-blue .metric-icon {
  91. color: #1677ff;
  92. background: #eaf3ff;
  93. }
  94. .metric-green .metric-icon {
  95. color: #16a77b;
  96. background: #e7faf4;
  97. }
  98. .metric-orange .metric-icon {
  99. color: #ef8c2f;
  100. background: #fff3e6;
  101. }
  102. .metric-teal .metric-icon {
  103. color: #0ca6a6;
  104. background: #e6f8f8;
  105. }
  106. .mode-tabs {
  107. margin: 0;
  108. padding: 5px;
  109. width: fit-content;
  110. display: flex;
  111. gap: 4px;
  112. border: 1px solid #dfe7f2;
  113. border-radius: 10px;
  114. background: #fff;
  115. box-shadow: 0 8px 22px rgba(40, 67, 106, 0.06);
  116. }
  117. .mode-tabs button {
  118. height: 38px;
  119. padding: 0 16px;
  120. display: inline-flex;
  121. align-items: center;
  122. gap: 7px;
  123. border: 0;
  124. border-radius: 7px;
  125. color: #607187;
  126. background: transparent;
  127. cursor: pointer;
  128. }
  129. .mode-tabs button.active {
  130. color: #fff;
  131. background: linear-gradient(135deg, #1768e5, #20b7d8);
  132. box-shadow: 0 8px 18px rgba(23, 104, 229, 0.22);
  133. }
  134. .workspace {
  135. width: 100%;
  136. display: grid;
  137. grid-template-columns: 286px minmax(0, 1fr);
  138. gap: 18px;
  139. align-items: start;
  140. }
  141. .sequence-panel,
  142. .table-panel,
  143. .detail-panel,
  144. .promote-map,
  145. .review-panel,
  146. .matrix-panel,
  147. .certificate-panel {
  148. overflow: hidden;
  149. border: 1px solid #e0e7f1;
  150. border-radius: 14px;
  151. background: #fff;
  152. box-shadow: 0 9px 28px rgba(40, 67, 106, 0.06);
  153. }
  154. .sequence-panel {
  155. min-height: 680px;
  156. padding: 22px 18px 18px;
  157. display: flex;
  158. flex-direction: column;
  159. }
  160. .panel-heading,
  161. .table-toolbar {
  162. display: flex;
  163. align-items: center;
  164. justify-content: space-between;
  165. gap: 16px;
  166. }
  167. .panel-heading h2,
  168. .table-toolbar h2 {
  169. margin: 4px 0 0;
  170. font-size: 19px;
  171. }
  172. .promote-map > .panel-heading h2,
  173. .review-panel > .panel-heading h2,
  174. .matrix-panel > .panel-heading h2,
  175. .certificate-panel > .panel-heading h2 {
  176. margin-top: 0;
  177. }
  178. .panel-heading.compact {
  179. margin-bottom: 16px;
  180. }
  181. .panel-kicker {
  182. color: #2c85ed;
  183. font-size: 10px;
  184. font-weight: 700;
  185. letter-spacing: 1.5px;
  186. }
  187. .icon-button,
  188. .close-detail {
  189. width: 34px;
  190. height: 34px;
  191. border: 1px solid #dfe7f2;
  192. border-radius: 8px;
  193. color: #55708f;
  194. background: #f8faff;
  195. cursor: pointer;
  196. }
  197. .tree-search {
  198. margin: 20px 0 14px;
  199. }
  200. .sequence-list {
  201. display: grid;
  202. gap: 10px;
  203. }
  204. .sequence-card {
  205. min-width: 0;
  206. padding: 13px;
  207. display: flex;
  208. align-items: center;
  209. gap: 10px;
  210. border: 1px solid #e3eaf4;
  211. border-radius: 11px;
  212. background: #fbfdff;
  213. text-align: left;
  214. cursor: pointer;
  215. transition: all 0.2s ease;
  216. }
  217. .sequence-card:hover,
  218. .sequence-card.active {
  219. border-color: var(--seq-color);
  220. background: linear-gradient(90deg, rgba(23, 104, 229, 0.06), #fff);
  221. transform: translateX(2px);
  222. }
  223. .sequence-mark {
  224. width: 34px;
  225. height: 34px;
  226. flex: 0 0 34px;
  227. display: flex;
  228. align-items: center;
  229. justify-content: center;
  230. border-radius: 10px;
  231. color: #fff;
  232. background: var(--seq-color);
  233. font-weight: 700;
  234. }
  235. .sequence-main {
  236. min-width: 0;
  237. flex: 1;
  238. }
  239. .sequence-main strong,
  240. .sequence-main small {
  241. display: block;
  242. overflow: hidden;
  243. text-overflow: ellipsis;
  244. white-space: nowrap;
  245. }
  246. .sequence-main small {
  247. margin-top: 3px;
  248. color: #92a0b2;
  249. font-size: 11px;
  250. }
  251. .sequence-card em {
  252. min-width: 25px;
  253. padding: 3px 7px;
  254. border-radius: 9px;
  255. color: #66768e;
  256. background: #edf2f8;
  257. font-style: normal;
  258. font-size: 11px;
  259. text-align: center;
  260. }
  261. .level-list {
  262. margin-top: 18px;
  263. padding-top: 16px;
  264. border-top: 1px solid #edf1f6;
  265. }
  266. .level-title {
  267. margin-bottom: 9px;
  268. color: #66768e;
  269. font-size: 12px;
  270. font-weight: 700;
  271. }
  272. .level-list button {
  273. width: 100%;
  274. height: 36px;
  275. margin-bottom: 7px;
  276. padding: 0 10px;
  277. display: flex;
  278. align-items: center;
  279. justify-content: space-between;
  280. border: 1px solid transparent;
  281. border-radius: 8px;
  282. color: #607187;
  283. background: #f7faff;
  284. cursor: pointer;
  285. }
  286. .level-list button.active {
  287. color: #1768e5;
  288. border-color: #cfe2ff;
  289. background: #edf6ff;
  290. }
  291. .table-panel {
  292. width: 100%;
  293. min-width: 0;
  294. overflow: visible;
  295. }
  296. .table-toolbar {
  297. padding: 22px 24px 18px;
  298. position: relative;
  299. z-index: 5;
  300. }
  301. .toolbar-controls {
  302. display: flex;
  303. align-items: center;
  304. gap: 10px;
  305. flex-wrap: wrap;
  306. justify-content: flex-end;
  307. }
  308. .keyword-input {
  309. width: 270px;
  310. }
  311. .medium-filter {
  312. width: 190px;
  313. }
  314. .small-filter {
  315. width: 120px;
  316. }
  317. .local-filter-select {
  318. position: relative;
  319. }
  320. .local-filter-select ::v-deep .el-select-dropdown {
  321. z-index: 30 !important;
  322. }
  323. .active-filter {
  324. margin: 0 24px 14px;
  325. padding: 10px 13px;
  326. display: flex;
  327. align-items: center;
  328. gap: 8px;
  329. border: 1px solid #dfebfa;
  330. border-radius: 9px;
  331. color: #718096;
  332. background: #f7faff;
  333. font-size: 12px;
  334. flex-wrap: wrap;
  335. }
  336. .active-filter strong {
  337. margin-left: auto;
  338. color: #2d5f9d;
  339. }
  340. .position-table::before {
  341. display: none;
  342. }
  343. .position-table ::v-deep th.el-table__cell {
  344. height: 50px;
  345. color: #68778c;
  346. background: #f6f8fb;
  347. font-weight: 600;
  348. }
  349. .position-table ::v-deep td.el-table__cell {
  350. padding: 12px 0;
  351. }
  352. .position-table ::v-deep .el-table__row {
  353. cursor: pointer;
  354. }
  355. .position-name-cell {
  356. display: flex;
  357. align-items: center;
  358. gap: 11px;
  359. }
  360. .position-name-cell strong,
  361. .position-name-cell small {
  362. display: block;
  363. }
  364. .position-name-cell small {
  365. margin-top: 4px;
  366. color: #99a4b4;
  367. font-size: 11px;
  368. font-family: Consolas, monospace;
  369. }
  370. .position-avatar,
  371. .detail-badge {
  372. width: 38px;
  373. height: 38px;
  374. flex: 0 0 38px;
  375. display: flex;
  376. align-items: center;
  377. justify-content: center;
  378. border-radius: 10px;
  379. color: #fff;
  380. font-size: 12px;
  381. font-weight: 700;
  382. }
  383. .seq-M {
  384. background: linear-gradient(135deg, #1768e5, #55a1ff);
  385. }
  386. .seq-P {
  387. background: linear-gradient(135deg, #7c5ce5, #a488ff);
  388. }
  389. .seq-T {
  390. background: linear-gradient(135deg, #0ca6a6, #32d1b4);
  391. }
  392. .seq-O {
  393. background: linear-gradient(135deg, #ed8a22, #f4bd58);
  394. }
  395. .dept-cell span,
  396. .dept-cell small {
  397. display: block;
  398. }
  399. .dept-cell small {
  400. margin-top: 4px;
  401. color: #9ca8b8;
  402. font-size: 11px;
  403. }
  404. .staffing-cell span {
  405. color: #526277;
  406. font-size: 12px;
  407. }
  408. .staffing-cell ::v-deep .el-progress-bar__outer {
  409. height: 6px !important;
  410. margin-top: 5px;
  411. }
  412. .salary-range {
  413. color: #35618f;
  414. font-weight: 600;
  415. }
  416. .skill-tags {
  417. display: flex;
  418. gap: 5px;
  419. flex-wrap: wrap;
  420. }
  421. .status-pill {
  422. display: inline-flex;
  423. align-items: center;
  424. gap: 6px;
  425. padding: 5px 9px;
  426. border-radius: 12px;
  427. font-size: 11px;
  428. }
  429. .status-pill i {
  430. width: 6px;
  431. height: 6px;
  432. border-radius: 50%;
  433. }
  434. .status-pill.is-active {
  435. color: #118969;
  436. background: #e8f8f3;
  437. }
  438. .status-pill.is-active i {
  439. background: #16b98a;
  440. }
  441. .status-pill.is-inactive {
  442. color: #8b94a2;
  443. background: #f0f2f5;
  444. }
  445. .status-pill.is-inactive i {
  446. background: #9aa4b2;
  447. }
  448. .status-pill.is-warning {
  449. color: #c46f11;
  450. background: #fff4e5;
  451. }
  452. .status-pill.is-warning i {
  453. background: #f0a43c;
  454. }
  455. .status-pill.is-archived {
  456. color: #667085;
  457. background: #eef0f3;
  458. }
  459. .status-pill.is-archived i {
  460. background: #7d8796;
  461. }
  462. .more-button {
  463. margin-left: 8px;
  464. }
  465. .detail-panel {
  466. min-height: 680px;
  467. }
  468. .detail-panel-drawer {
  469. min-height: 100vh;
  470. border: 0;
  471. border-radius: 0;
  472. box-shadow: none;
  473. }
  474. :global(.position-detail-drawer) {
  475. overflow: auto;
  476. background: #fff;
  477. }
  478. :global(.position-detail-drawer .el-drawer__body) {
  479. overflow: auto;
  480. }
  481. .detail-panel-drawer .detail-header {
  482. padding-top: 28px;
  483. }
  484. .detail-header {
  485. padding: 22px 22px 18px;
  486. position: relative;
  487. text-align: center;
  488. color: #fff;
  489. background: linear-gradient(135deg, #10284e, #0a637a);
  490. }
  491. .close-detail {
  492. position: absolute;
  493. top: 12px;
  494. right: 12px;
  495. color: rgba(255, 255, 255, 0.86);
  496. border-color: rgba(255, 255, 255, 0.2);
  497. background: rgba(255, 255, 255, 0.1);
  498. }
  499. .detail-badge {
  500. margin: 0 auto 12px;
  501. width: 48px;
  502. height: 48px;
  503. }
  504. .detail-header h2 {
  505. margin: 0 0 6px;
  506. font-size: 22px;
  507. }
  508. .detail-header p {
  509. margin: 0 0 12px;
  510. color: rgba(255, 255, 255, 0.68);
  511. }
  512. .detail-tabs {
  513. padding: 0 18px 18px;
  514. }
  515. .detail-tab-spaced {
  516. padding-top: 12px;
  517. }
  518. .detail-grid {
  519. display: grid;
  520. grid-template-columns: 1fr 1fr;
  521. gap: 10px;
  522. }
  523. .detail-grid div,
  524. .info-strip {
  525. padding: 12px;
  526. border: 1px solid #e4ebf4;
  527. border-radius: 9px;
  528. background: #f8fbff;
  529. }
  530. .detail-grid span,
  531. .info-strip span,
  532. .info-strip small {
  533. display: block;
  534. color: #8a98aa;
  535. font-size: 11px;
  536. }
  537. .detail-grid strong,
  538. .info-strip strong {
  539. margin-top: 4px;
  540. display: block;
  541. color: #22334f;
  542. }
  543. .info-strip {
  544. margin-top: 10px;
  545. }
  546. .info-strip strong {
  547. font-size: 18px;
  548. }
  549. .section-title {
  550. margin: 14px 0 9px;
  551. color: #22334f;
  552. font-size: 13px;
  553. font-weight: 700;
  554. }
  555. .duty-list {
  556. margin: 0;
  557. padding-left: 19px;
  558. color: #536277;
  559. line-height: 1.8;
  560. }
  561. .tag-wrap {
  562. display: flex;
  563. gap: 7px;
  564. flex-wrap: wrap;
  565. }
  566. .kv-list p {
  567. margin: 10px 0;
  568. color: #536277;
  569. line-height: 1.6;
  570. }
  571. .kv-list span {
  572. min-width: 70px;
  573. display: inline-block;
  574. color: #8b98aa;
  575. }
  576. .path-line {
  577. display: grid;
  578. grid-template-columns: 1fr 24px 1fr 24px 1fr;
  579. gap: 6px;
  580. align-items: center;
  581. }
  582. .path-line div {
  583. min-height: 78px;
  584. padding: 12px;
  585. border: 1px solid #e4ebf4;
  586. border-radius: 9px;
  587. background: #f8fbff;
  588. }
  589. .path-line .current {
  590. color: #fff;
  591. border-color: transparent;
  592. background: linear-gradient(135deg, #1768e5, #20b7d8);
  593. }
  594. .path-line small,
  595. .path-line strong {
  596. display: block;
  597. }
  598. .path-line small {
  599. color: #8b98aa;
  600. }
  601. .path-line .current small {
  602. color: rgba(255, 255, 255, 0.75);
  603. }
  604. .skill-progress {
  605. margin-bottom: 14px;
  606. }
  607. .skill-progress div {
  608. margin-bottom: 6px;
  609. display: flex;
  610. justify-content: space-between;
  611. gap: 8px;
  612. }
  613. .skill-progress span {
  614. color: #8b98aa;
  615. font-size: 12px;
  616. }
  617. .cert-list {
  618. display: grid;
  619. gap: 8px;
  620. }
  621. .cert-list div,
  622. .employee-list div {
  623. padding: 10px;
  624. border: 1px solid #e4ebf4;
  625. border-radius: 9px;
  626. background: #f8fbff;
  627. }
  628. .cert-list strong,
  629. .cert-list span {
  630. display: block;
  631. }
  632. .cert-list span {
  633. margin-top: 4px;
  634. color: #8b98aa;
  635. font-size: 12px;
  636. }
  637. .employee-list {
  638. display: grid;
  639. gap: 8px;
  640. }
  641. .employee-list > div {
  642. display: flex;
  643. align-items: center;
  644. gap: 10px;
  645. }
  646. .employee-list small {
  647. display: block;
  648. margin-top: 3px;
  649. color: #8b98aa;
  650. }
  651. .employee-list em {
  652. margin-left: auto;
  653. color: #1768e5;
  654. font-style: normal;
  655. font-weight: 700;
  656. }
  657. .history-line {
  658. padding: 5px 2px 0;
  659. }
  660. .history-line p {
  661. margin: 6px 0 0;
  662. color: #66768e;
  663. line-height: 1.6;
  664. }
  665. .promote-workbench,
  666. .skill-workbench {
  667. display: grid;
  668. grid-template-columns: minmax(0, 1fr) 330px;
  669. gap: 18px;
  670. }
  671. .promote-map,
  672. .matrix-panel {
  673. padding: 22px 24px 24px;
  674. }
  675. .review-panel,
  676. .certificate-panel {
  677. padding: 22px 18px;
  678. }
  679. .lane-grid {
  680. margin-top: 18px;
  681. display: grid;
  682. grid-template-columns: repeat(4, minmax(0, 1fr));
  683. gap: 14px;
  684. }
  685. .lane {
  686. min-height: 480px;
  687. padding: 14px;
  688. border: 1px solid #e2eaf4;
  689. border-radius: 12px;
  690. background: linear-gradient(180deg, rgba(248, 251, 255, 0.95), #fff);
  691. }
  692. .lane-title {
  693. padding-bottom: 12px;
  694. border-bottom: 2px solid var(--seq-color);
  695. }
  696. .lane-title strong,
  697. .lane-title span {
  698. display: block;
  699. }
  700. .lane-title span {
  701. margin-top: 4px;
  702. color: #8b98aa;
  703. font-size: 12px;
  704. }
  705. .lane-cards {
  706. margin-top: 14px;
  707. display: grid;
  708. gap: 12px;
  709. }
  710. .promote-card {
  711. min-height: 118px;
  712. padding: 14px;
  713. position: relative;
  714. border: 1px solid #e3eaf4;
  715. border-radius: 11px;
  716. background: #fff;
  717. cursor: pointer;
  718. transition: all 0.2s ease;
  719. }
  720. .promote-card:hover {
  721. transform: translateY(-3px);
  722. box-shadow: 0 12px 26px rgba(37, 67, 111, 0.11);
  723. }
  724. .promote-card.selected {
  725. border-color: var(--seq-color);
  726. box-shadow: 0 0 0 2px rgba(23, 104, 229, 0.12);
  727. }
  728. .canvas-tools {
  729. min-width: 280px;
  730. display: flex;
  731. align-items: center;
  732. gap: 8px;
  733. }
  734. .canvas-tools ::v-deep .el-slider {
  735. width: 90px;
  736. }
  737. .zoom-button {
  738. width: 30px;
  739. height: 30px;
  740. padding: 0;
  741. display: inline-flex;
  742. align-items: center;
  743. justify-content: center;
  744. border: 1px solid #dce5f0;
  745. border-radius: 7px;
  746. color: #52677f;
  747. background: #fff;
  748. cursor: pointer;
  749. transition: all 0.2s ease;
  750. }
  751. .zoom-button:hover:not(:disabled) {
  752. color: #1768e5;
  753. border-color: #8fbcf5;
  754. background: #edf6ff;
  755. }
  756. .zoom-button:active:not(:disabled) {
  757. transform: scale(0.94);
  758. }
  759. .zoom-button:disabled {
  760. color: #c5ced9;
  761. background: #f5f7fa;
  762. cursor: not-allowed;
  763. }
  764. .zoom-value {
  765. min-width: 38px;
  766. color: #66768e;
  767. font-size: 12px;
  768. font-weight: 600;
  769. text-align: center;
  770. }
  771. .promote-property {
  772. margin-bottom: 20px;
  773. padding: 14px;
  774. border: 1px solid #dce8f8;
  775. border-radius: 9px;
  776. background: #f7fbff;
  777. }
  778. .promote-property h3 {
  779. margin: 6px 0 10px;
  780. }
  781. .promote-property p {
  782. margin: 6px 0;
  783. color: #66768e;
  784. font-size: 12px;
  785. }
  786. .promote-card small {
  787. color: var(--seq-color);
  788. font-weight: 700;
  789. }
  790. .promote-card strong,
  791. .promote-card span {
  792. display: block;
  793. }
  794. .promote-card strong {
  795. margin: 8px 0;
  796. }
  797. .promote-card span {
  798. color: #8b98aa;
  799. font-size: 12px;
  800. line-height: 1.5;
  801. }
  802. .promote-card i {
  803. position: absolute;
  804. right: 13px;
  805. top: 13px;
  806. color: var(--seq-color);
  807. }
  808. .review-card {
  809. margin-bottom: 12px;
  810. padding: 13px;
  811. border: 1px solid #e3eaf4;
  812. border-radius: 10px;
  813. background: #fbfdff;
  814. }
  815. .review-card strong,
  816. .review-card small {
  817. display: block;
  818. }
  819. .review-card > .el-button {
  820. margin-top: 8px;
  821. }
  822. .review-card small {
  823. margin-top: 4px;
  824. color: #8b98aa;
  825. }
  826. .review-card ::v-deep .el-progress {
  827. margin: 10px 0;
  828. }
  829. .review-meta {
  830. display: flex;
  831. align-items: center;
  832. justify-content: space-between;
  833. color: #8b98aa;
  834. font-size: 12px;
  835. }
  836. .stats-mini {
  837. margin-top: 18px;
  838. display: grid;
  839. grid-template-columns: 1fr 1fr;
  840. gap: 10px;
  841. }
  842. .stats-mini div {
  843. padding: 12px;
  844. border-radius: 9px;
  845. background: #f5f8fc;
  846. }
  847. .stats-mini strong,
  848. .stats-mini span {
  849. display: block;
  850. }
  851. .stats-mini strong {
  852. color: #1768e5;
  853. font-size: 22px;
  854. }
  855. .stats-mini span {
  856. color: #8b98aa;
  857. font-size: 11px;
  858. }
  859. .matrix-table {
  860. margin-top: 18px;
  861. display: grid;
  862. grid-template-columns: 190px repeat(8, minmax(105px, 1fr));
  863. overflow: auto;
  864. border: 1px solid #e2eaf4;
  865. border-radius: 10px;
  866. }
  867. .matrix-head,
  868. .matrix-position,
  869. .matrix-cell {
  870. min-height: 54px;
  871. padding: 10px;
  872. border-right: 1px solid #e7eef7;
  873. border-bottom: 1px solid #e7eef7;
  874. }
  875. .matrix-head {
  876. display: flex;
  877. align-items: center;
  878. justify-content: center;
  879. color: #526277;
  880. background: #f4f7fb;
  881. font-weight: 700;
  882. text-align: center;
  883. }
  884. .sticky-cell {
  885. justify-content: flex-start;
  886. position: sticky;
  887. left: 0;
  888. z-index: 2;
  889. }
  890. .matrix-position {
  891. position: sticky;
  892. left: 0;
  893. z-index: 1;
  894. background: #fff;
  895. }
  896. .matrix-position strong,
  897. .matrix-position small {
  898. display: block;
  899. }
  900. .matrix-position small {
  901. margin-top: 4px;
  902. color: #8b98aa;
  903. }
  904. .matrix-cell {
  905. border-top: 0;
  906. border-left: 0;
  907. font-weight: 700;
  908. cursor: pointer;
  909. }
  910. .matrix-cell.ok {
  911. color: #118969;
  912. background: #e8f8f3;
  913. }
  914. .matrix-cell.warn {
  915. color: #b46a10;
  916. background: #fff5e7;
  917. }
  918. .matrix-cell.bad {
  919. color: #c94242;
  920. background: #fff0f0;
  921. }
  922. .certificate-card {
  923. margin-bottom: 10px;
  924. padding: 13px;
  925. display: flex;
  926. align-items: center;
  927. justify-content: space-between;
  928. gap: 10px;
  929. border: 1px solid #e3eaf4;
  930. border-radius: 10px;
  931. background: #fbfdff;
  932. }
  933. .certificate-card strong,
  934. .certificate-card small {
  935. display: block;
  936. }
  937. .certificate-card small {
  938. margin-top: 4px;
  939. color: #8b98aa;
  940. }
  941. .certificate-card span {
  942. color: #118969;
  943. font-weight: 700;
  944. }
  945. .certificate-card span.danger {
  946. color: #d45b38;
  947. }
  948. .skill-library {
  949. margin-top: 18px;
  950. padding-top: 16px;
  951. border-top: 1px solid #edf1f6;
  952. }
  953. .library-heading {
  954. display: flex;
  955. align-items: center;
  956. justify-content: space-between;
  957. }
  958. .empty-state {
  959. padding: 52px 0;
  960. display: flex;
  961. flex-direction: column;
  962. align-items: center;
  963. color: #99a4b4;
  964. }
  965. .empty-state strong {
  966. margin: 14px 0 6px;
  967. color: #526277;
  968. }
  969. .empty-orbit {
  970. width: 62px;
  971. height: 62px;
  972. display: flex;
  973. align-items: center;
  974. justify-content: center;
  975. border: 1px solid #dbe7f5;
  976. border-radius: 50%;
  977. color: #2685ed;
  978. background: #f3f8ff;
  979. box-shadow: 0 0 0 10px #f8fbff;
  980. font-size: 25px;
  981. }
  982. @media screen and (max-width: 1500px) {
  983. .workspace {
  984. grid-template-columns: 260px minmax(0, 1fr);
  985. }
  986. .detail-grid {
  987. grid-template-columns: repeat(4, minmax(0, 1fr));
  988. }
  989. }
  990. @media screen and (max-width: 1180px) {
  991. .metric-grid {
  992. grid-template-columns: repeat(2, minmax(0, 1fr));
  993. }
  994. .workspace,
  995. .promote-workbench,
  996. .skill-workbench {
  997. grid-template-columns: 1fr;
  998. }
  999. .sequence-panel {
  1000. min-height: auto;
  1001. }
  1002. .lane-grid {
  1003. grid-template-columns: repeat(2, minmax(0, 1fr));
  1004. }
  1005. .table-toolbar {
  1006. align-items: flex-start;
  1007. }
  1008. .view-toolbar {
  1009. align-items: flex-start;
  1010. flex-direction: column;
  1011. }
  1012. .view-toolbar .toolbar-actions {
  1013. width: 100%;
  1014. justify-content: flex-start;
  1015. }
  1016. }
  1017. @media screen and (max-width: 760px) {
  1018. .position-page {
  1019. padding: 12px;
  1020. }
  1021. .action-toolbar {
  1022. padding: 10px;
  1023. }
  1024. .toolbar-actions {
  1025. width: 100%;
  1026. justify-content: flex-start;
  1027. }
  1028. .toolbar-actions ::v-deep .el-button {
  1029. flex: 1 1 calc(50% - 5px);
  1030. margin: 0;
  1031. }
  1032. .metric-grid {
  1033. margin: 0 0 16px;
  1034. grid-template-columns: 1fr;
  1035. }
  1036. .mode-tabs {
  1037. width: 100%;
  1038. }
  1039. .mode-tabs button {
  1040. flex: 1;
  1041. justify-content: center;
  1042. padding: 0 8px;
  1043. }
  1044. .table-toolbar {
  1045. display: block;
  1046. }
  1047. .toolbar-controls {
  1048. margin-top: 14px;
  1049. justify-content: flex-start;
  1050. }
  1051. .keyword-input,
  1052. .medium-filter,
  1053. .small-filter {
  1054. width: 100%;
  1055. }
  1056. .detail-grid,
  1057. .lane-grid {
  1058. grid-template-columns: 1fr;
  1059. }
  1060. .path-line {
  1061. grid-template-columns: 1fr;
  1062. }
  1063. .path-line > i {
  1064. transform: rotate(90deg);
  1065. justify-self: center;
  1066. }
  1067. }