globals.scss 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266
  1. @tailwind base;
  2. @tailwind components;
  3. @tailwind utilities;
  4. html {
  5. min-height: 100vh;
  6. width: 100%;
  7. min-width: 355px;
  8. }
  9. body {
  10. min-height: 100vh;
  11. width: 100%;
  12. min-width: 355px;
  13. overflow-x: hidden;
  14. overflow-y: auto;
  15. margin: 0;
  16. padding: 0;
  17. }
  18. @layer base {
  19. :root {
  20. --background: 0 0% 100%;
  21. --foreground: 0 0% 3.9%;
  22. --card: 0 0% 100%;
  23. --card-foreground: 0 0% 3.9%;
  24. --popover: 0 0% 100%;
  25. --popover-foreground: 0 0% 3.9%;
  26. --primary: 0 0% 9%;
  27. --primary-foreground: 0 0% 98%;
  28. --secondary: 0 0% 96.1%;
  29. --secondary-foreground: 0 0% 9%;
  30. --muted: 0 0% 96.1%;
  31. --muted-foreground: 0 0% 45.1%;
  32. --accent: 0 0% 96.1%;
  33. --accent-foreground: 0 0% 9%;
  34. --destructive: 0 84.2% 60.2%;
  35. --destructive-foreground: 0 0% 98%;
  36. --border: 0 0% 89.8%;
  37. --input: 0 0% 89.8%;
  38. --ring: 215 100% 50%;
  39. --chart-1: 12 76% 61%;
  40. --chart-2: 173 58% 39%;
  41. --chart-3: 197 37% 24%;
  42. --chart-4: 43 74% 66%;
  43. --chart-5: 27 87% 67%;
  44. --radius: 0.5rem;
  45. --crypto-up: 0 70% 55%;
  46. --crypto-down: 220 70% 55%;
  47. --crypto-neutral: 0 0% 50%;
  48. /* 시맨틱 색상 변수 */
  49. --text-normal: #f1f1f1;
  50. --text-primary: #141414;
  51. --text-secondary: #666;
  52. --text-muted: #999;
  53. --text-link: #0060a9;
  54. --text-link-hover: #c7511f;
  55. --text-head: #e5e5e5;
  56. --bg-page: #fff;
  57. --bg-elevated: #f9f9f9;
  58. --bg-subtle: #f4f4f4;
  59. --bg-input: #fff;
  60. --bg-head: #007bc3;
  61. --bg-icon: #004f7c;
  62. --border-default: #eaeaea;
  63. --border-light: #eee;
  64. --border-strong: #ccc;
  65. --shadow-color: rgba(0,0,0,0.12);
  66. --brand-orange: #F7931A;
  67. --brand-orange-hover: #e5851a;
  68. --color-danger: #d51b28;
  69. --color-success: #4caf50;
  70. --color-warning-bg: #fefce8;
  71. --color-warning-text: #92400e;
  72. --overlay-color: rgba(0,0,0,0.5);
  73. --sidebar-active-bg: #fff3e0;
  74. --list-row-active: #faffd1;
  75. --btn-default-border: #b3b3b3;
  76. --btn-default-hover: #e3e3e3;
  77. --btn-submit-shadow: #d38817;
  78. --outline-default: #c2c2c2;
  79. --fg-default: #0f0f0f;
  80. --color-blue: #3b82f6;
  81. --color-blue-hover: #2563eb;
  82. --color-blue-bg: rgba(59, 130, 246, 0.06);
  83. --color-danger-bg: #fee2e2;
  84. --color-danger-border: #fca5a5;
  85. --color-success-bg: #dcfce7;
  86. --color-success-text: #16a34a;
  87. --bg-subtle-hover: rgba(0, 0, 0, 0.05);
  88. --sidebar-background: 0 0% 98%;
  89. --sidebar-foreground: 240 5.3% 26.1%;
  90. --sidebar-primary: 240 5.9% 10%;
  91. --sidebar-primary-foreground: 0 0% 98%;
  92. --sidebar-accent: 240 4.8% 95.9%;
  93. --sidebar-accent-foreground: 240 5.9% 10%;
  94. --sidebar-border: 220 13% 91%;
  95. --sidebar-ring: 217.2 91.2% 59.8%;
  96. }
  97. .dark {
  98. --background: 0 0% 3.9%;
  99. --foreground: 0 0% 98%;
  100. --card: 0 0% 3.9%;
  101. --card-foreground: 0 0% 98%;
  102. --popover: 0 0% 3.9%;
  103. --popover-foreground: 0 0% 98%;
  104. --primary: 0 0% 98%;
  105. --primary-foreground: 0 0% 9%;
  106. --secondary: 0 0% 14.9%;
  107. --secondary-foreground: 0 0% 98%;
  108. --muted: 0 0% 14.9%;
  109. --muted-foreground: 0 0% 63.9%;
  110. --accent: 0 0% 14.9%;
  111. --accent-foreground: 0 0% 98%;
  112. --destructive: 0 62.8% 30.6%;
  113. --destructive-foreground: 0 0% 98%;
  114. --border: 0 0% 14.9%;
  115. --input: 0 0% 14.9%;
  116. --ring: 215 100% 60%;
  117. --chart-1: 220 70% 50%;
  118. --chart-2: 160 60% 45%;
  119. --chart-3: 30 80% 55%;
  120. --chart-4: 280 65% 60%;
  121. --chart-5: 340 75% 55%;
  122. --crypto-up: 0 70% 60%;
  123. --crypto-down: 220 70% 60%;
  124. --crypto-neutral: 0 0% 63.9%;
  125. /* 시맨틱 색상 변수 */
  126. --text-normal: #f1f1f1;
  127. --text-primary: #cacaca;
  128. --text-secondary: #a3a3a3;
  129. --text-muted: #737373;
  130. --text-link: #60a5fa;
  131. --text-link-hover: #f59e0b;
  132. --text-head: #cacaca;
  133. --bg-page: #171717;
  134. --bg-elevated: #1e1e1e;
  135. --bg-subtle: #262626;
  136. --bg-input: #262626;
  137. --bg-head: #5603a3;
  138. --bg-icon: #3c00aa;
  139. --border-default: #333;
  140. --border-light: #2a2a2a;
  141. --border-strong: #444;
  142. --shadow-color: rgba(0,0,0,0.4);
  143. --brand-orange: #F7931A;
  144. --brand-orange-hover: #f59e0b;
  145. --color-danger: #ef4444;
  146. --color-success: #22c55e;
  147. --color-warning-bg: #422006;
  148. --color-warning-text: #fef08a;
  149. --overlay-color: rgba(0,0,0,0.7);
  150. --sidebar-active-bg: #3d2800;
  151. --list-row-active: #2a2a00;
  152. --btn-default-border: #555;
  153. --btn-default-hover: #333;
  154. --btn-submit-shadow: #b8700f;
  155. --fg-default: #f1f1f1;
  156. --color-blue: #60a5fa;
  157. --color-blue-hover: #3b82f6;
  158. --color-blue-bg: rgba(96, 165, 250, 0.1);
  159. --color-danger-bg: #3f1212;
  160. --color-danger-border: #7f1d1d;
  161. --color-success-bg: #0f2d1a;
  162. --color-success-text: #4ade80;
  163. --bg-subtle-hover: rgba(255, 255, 255, 0.05);
  164. --sidebar-background: 240 5.9% 10%;
  165. --sidebar-foreground: 240 4.8% 95.9%;
  166. --sidebar-primary: 224.3 76.3% 48%;
  167. --sidebar-primary-foreground: 0 0% 100%;
  168. --sidebar-accent: 240 3.7% 15.9%;
  169. --sidebar-accent-foreground: 240 4.8% 95.9%;
  170. --sidebar-border: 240 3.7% 15.9%;
  171. --sidebar-ring: 217.2 91.2% 59.8%;
  172. }
  173. }
  174. @layer base {
  175. * {
  176. @apply border-border;
  177. }
  178. body {
  179. @apply bg-background text-foreground;
  180. }
  181. }
  182. select, input, textarea {
  183. font-size: 1rem;
  184. padding: 5px;
  185. color: var(--text-primary);
  186. background: var(--bg-input);
  187. border: 1px solid var(--border-strong);
  188. border-radius: 3px;
  189. line-height: inherit;
  190. transition: border-color 0.3s ease;
  191. &:focus,
  192. &:hover {
  193. outline: none;
  194. border-color: var(--text-link);
  195. }
  196. &:focus {
  197. -webkit-box-shadow: inset 1px 2px 2px rgba(0, 0, 0, 0.05), 0 0 4px rgba(44, 112, 170, 0.8);
  198. box-shadow: inset 1px 2px 2px rgba(0, 0, 0, 0.05), 0 0 4px rgba(44, 112, 170, 0.8);
  199. }
  200. }
  201. // shadcn 폼 컨트롤 포커스 글로우 (Select trigger, Checkbox 등)
  202. [role="input"]
  203. [role="combobox"],
  204. [role="checkbox"] {
  205. transition: border-color 0.3s ease;
  206. &:focus,
  207. &:hover {
  208. outline: none;
  209. border-color: var(--text-link);
  210. }
  211. &:focus {
  212. -webkit-box-shadow: inset 1px 2px 2px rgba(0, 0, 0, 0.05), 0 0 4px rgba(44, 112, 170, 0.8);
  213. box-shadow: inset 1px 2px 2px rgba(0, 0, 0, 0.05), 0 0 4px rgba(44, 112, 170, 0.8);
  214. }
  215. }
  216. // 모든 버튼 속성값
  217. .btn {
  218. display: inline-block;
  219. padding: 5px 15px;
  220. border-radius: 4px;
  221. height: auto;
  222. text-align: center;
  223. cursor: pointer;
  224. }
  225. // 기본 버튼
  226. .btn-default {
  227. color: var(--text-primary);
  228. background: var(--bg-subtle);
  229. border: 1px solid var(--btn-default-border);
  230. -webkit-box-shadow: inset 0 -1px 0 0 var(--btn-default-border);
  231. box-shadow: inset 0 -1px 0 0 var(--btn-default-border);
  232. &:hover {
  233. background: var(--btn-default-hover);
  234. }
  235. }
  236. // 제출 버튼
  237. .btn-submit {
  238. color: #fff;
  239. background: var(--brand-orange);
  240. border: 1px solid var(--brand-orange);
  241. -webkit-box-shadow: inset 0 -2px 0 0 var(--btn-submit-shadow);
  242. box-shadow: inset 0 -2px 0 0 var(--btn-submit-shadow);
  243. &:hover {
  244. background: var(--brand-orange-hover);
  245. border-color: var(--brand-orange-hover);
  246. }
  247. }