market-movers.scss 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. // ─────────────────────────────────────────────────────────────
  2. // 등락 상위 종목 (MarketMovers) — 상승/하락/상한/하한 4그룹 패널, 각 상위 5.
  3. // 행: 종목명·시장·코드 | 스파크라인 | 현재가·등락률. 등락색 --price-up/down(상승 적/하락 청).
  4. // ─────────────────────────────────────────────────────────────
  5. .mov {
  6. margin-bottom: var(--sp-6);
  7. &__head {
  8. display: flex;
  9. align-items: baseline;
  10. gap: var(--sp-3);
  11. margin-bottom: var(--sp-4);
  12. }
  13. &__title {
  14. font-size: var(--fs-lg);
  15. font-weight: 700;
  16. color: var(--text-primary);
  17. }
  18. &__asof {
  19. font-size: var(--fs-xs);
  20. color: var(--text-muted);
  21. font-variant-numeric: tabular-nums;
  22. }
  23. &__grid {
  24. display: grid;
  25. grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  26. gap: var(--sp-4);
  27. }
  28. &__panel {
  29. overflow: hidden;
  30. }
  31. &__panel-head {
  32. display: flex;
  33. align-items: baseline;
  34. justify-content: space-between;
  35. padding: var(--sp-3) var(--sp-4);
  36. border-bottom: 1px solid var(--border-light);
  37. &--up .mov__panel-label {
  38. color: var(--price-up);
  39. }
  40. &--down .mov__panel-label {
  41. color: var(--price-down);
  42. }
  43. }
  44. &__panel-label {
  45. font-size: var(--fs-sm);
  46. font-weight: 700;
  47. }
  48. &__panel-count {
  49. font-size: var(--fs-xs);
  50. color: var(--text-muted);
  51. font-variant-numeric: tabular-nums;
  52. }
  53. &__empty {
  54. padding: var(--sp-5) var(--sp-4);
  55. text-align: center;
  56. font-size: var(--fs-sm);
  57. color: var(--text-muted);
  58. }
  59. &__list {
  60. list-style: none;
  61. margin: 0;
  62. padding: 0;
  63. }
  64. &__row {
  65. display: grid;
  66. grid-template-columns: minmax(0, 1fr) 72px minmax(0, auto);
  67. align-items: center;
  68. gap: var(--sp-3);
  69. padding: var(--sp-3) var(--sp-4);
  70. & + & {
  71. border-top: 1px solid var(--border-light);
  72. }
  73. }
  74. &__meta {
  75. display: flex;
  76. flex-direction: column;
  77. min-width: 0;
  78. }
  79. &__name {
  80. font-size: var(--fs-sm);
  81. font-weight: 600;
  82. color: var(--text-primary);
  83. white-space: nowrap;
  84. overflow: hidden;
  85. text-overflow: ellipsis;
  86. }
  87. &__sub {
  88. font-size: var(--fs-xs);
  89. color: var(--text-muted);
  90. white-space: nowrap;
  91. }
  92. &__spark {
  93. height: 32px;
  94. }
  95. &__nums {
  96. display: flex;
  97. flex-direction: column;
  98. align-items: flex-end;
  99. font-variant-numeric: tabular-nums;
  100. }
  101. &__price {
  102. font-size: var(--fs-sm);
  103. font-weight: 600;
  104. color: var(--text-primary);
  105. }
  106. &__rate {
  107. display: inline-flex;
  108. align-items: baseline;
  109. gap: 2px;
  110. font-size: var(--fs-xs);
  111. font-weight: 600;
  112. &--up {
  113. color: var(--price-up);
  114. }
  115. &--down {
  116. color: var(--price-down);
  117. }
  118. &--flat {
  119. color: var(--price-flat);
  120. }
  121. }
  122. &__arrow {
  123. font-style: normal;
  124. font-size: 0.85em;
  125. }
  126. }