major-quotes.scss 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232
  1. // ─────────────────────────────────────────────────────────────
  2. // 주요 종목 현황 (MajorQuotesGrid) — 그룹 탭 + 데이터 그리드 + TradingView 드릴다운 모달
  3. // 등락색 --price-up/down/flat(상승 적/하락 청). 기존 토큰만 사용(라이트·다크 양립).
  4. // ─────────────────────────────────────────────────────────────
  5. .major-quotes {
  6. margin-bottom: var(--sp-6);
  7. padding: var(--sp-4);
  8. background: var(--bg-elevated);
  9. border: 1px solid var(--border-default);
  10. border-radius: var(--radius);
  11. &__head {
  12. display: flex;
  13. align-items: center;
  14. justify-content: space-between;
  15. flex-wrap: wrap;
  16. gap: var(--sp-3);
  17. margin-bottom: var(--sp-3);
  18. }
  19. &__title {
  20. font-size: var(--fs-lg);
  21. font-weight: 700;
  22. color: var(--text-primary);
  23. }
  24. &__asof {
  25. font-size: var(--fs-xs);
  26. color: var(--text-muted);
  27. font-variant-numeric: tabular-nums;
  28. }
  29. &__tabs {
  30. display: flex;
  31. flex-wrap: wrap;
  32. gap: var(--sp-2);
  33. border-bottom: 1px solid var(--border-default);
  34. margin-bottom: var(--sp-2);
  35. }
  36. &__tab {
  37. padding: var(--sp-3) var(--sp-4);
  38. background: transparent;
  39. border: none;
  40. border-bottom: 2px solid transparent;
  41. margin-bottom: -1px;
  42. font-size: var(--fs-sm);
  43. font-weight: 600;
  44. color: var(--text-muted);
  45. cursor: pointer;
  46. transition: color 0.12s ease, border-color 0.12s ease;
  47. &:hover {
  48. color: var(--text-secondary);
  49. }
  50. &.is-active {
  51. color: var(--text-primary);
  52. border-bottom-color: var(--text-link);
  53. }
  54. }
  55. &__grid-wrap {
  56. overflow-x: auto;
  57. }
  58. &__grid {
  59. width: 100%;
  60. border-collapse: collapse;
  61. font-size: var(--fs-sm);
  62. font-variant-numeric: tabular-nums;
  63. th {
  64. padding: var(--sp-3);
  65. text-align: right;
  66. font-size: var(--fs-xs);
  67. font-weight: 600;
  68. color: var(--text-muted);
  69. border-bottom: 1px solid var(--border-default);
  70. white-space: nowrap;
  71. }
  72. td {
  73. padding: var(--sp-3);
  74. border-bottom: 1px solid var(--border-light);
  75. white-space: nowrap;
  76. }
  77. }
  78. &__row {
  79. transition: background 0.1s ease;
  80. &:hover {
  81. background: var(--bg-subtle-hover);
  82. }
  83. }
  84. &__c-name {
  85. text-align: left;
  86. font-weight: 600;
  87. color: var(--text-primary);
  88. }
  89. &__c-num {
  90. text-align: right;
  91. }
  92. &__c-time {
  93. text-align: right;
  94. font-size: var(--fs-xs);
  95. color: var(--text-muted);
  96. }
  97. &__c-chart {
  98. text-align: center;
  99. width: 1%;
  100. }
  101. &__c-close {
  102. color: var(--text-primary);
  103. font-weight: 600;
  104. }
  105. &__c-vol {
  106. color: var(--text-secondary);
  107. }
  108. &__c-up {
  109. color: var(--price-up);
  110. }
  111. &__c-down {
  112. color: var(--price-down);
  113. }
  114. &__c-flat {
  115. color: var(--price-flat);
  116. }
  117. &__chart-btn {
  118. display: inline-flex;
  119. align-items: center;
  120. justify-content: center;
  121. padding: var(--sp-2);
  122. background: transparent;
  123. border: 1px solid var(--border-default);
  124. border-radius: var(--radius);
  125. color: var(--text-muted);
  126. cursor: pointer;
  127. transition: color 0.12s ease, border-color 0.12s ease;
  128. &:hover {
  129. color: var(--text-link);
  130. border-color: var(--text-link);
  131. }
  132. }
  133. &__chart-na {
  134. color: var(--text-muted);
  135. }
  136. // 차트 모달 (TradingView)
  137. &__modal {
  138. position: fixed;
  139. inset: 0;
  140. z-index: 1000;
  141. display: flex;
  142. align-items: center;
  143. justify-content: center;
  144. padding: var(--sp-5);
  145. background: rgba(0, 0, 0, 0.55);
  146. }
  147. &__modal-panel {
  148. display: flex;
  149. flex-direction: column;
  150. width: min(960px, 96vw);
  151. height: min(620px, 88vh);
  152. background: var(--bg-page);
  153. border: 1px solid var(--border-strong);
  154. border-radius: var(--radius);
  155. overflow: hidden;
  156. }
  157. &__modal-head {
  158. display: flex;
  159. align-items: center;
  160. justify-content: space-between;
  161. gap: var(--sp-3);
  162. padding: var(--sp-3) var(--sp-4);
  163. border-bottom: 1px solid var(--border-default);
  164. }
  165. &__modal-title {
  166. font-size: var(--fs-base);
  167. font-weight: 700;
  168. color: var(--text-primary);
  169. }
  170. &__modal-close {
  171. display: inline-flex;
  172. align-items: center;
  173. justify-content: center;
  174. width: 28px;
  175. height: 28px;
  176. background: transparent;
  177. border: none;
  178. border-radius: var(--radius);
  179. font-size: var(--fs-2xl);
  180. line-height: 1;
  181. color: var(--text-muted);
  182. cursor: pointer;
  183. &:hover {
  184. color: var(--text-primary);
  185. background: var(--bg-subtle-hover);
  186. }
  187. }
  188. &__modal-body {
  189. flex: 1;
  190. min-height: 0;
  191. }
  192. &__modal-note {
  193. padding: var(--sp-2) var(--sp-4);
  194. font-size: var(--fs-2xs);
  195. color: var(--text-muted);
  196. text-align: right;
  197. }
  198. }