style.scss 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417
  1. // ── 정산 공통 ──────────────────────────────────────
  2. .settlement {
  3. max-width: 960px;
  4. // ── Summary Cards ──
  5. &__cards {
  6. display: grid;
  7. grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  8. gap: 16px;
  9. margin-bottom: 28px;
  10. }
  11. &__card {
  12. border: 1px solid hsl(var(--border));
  13. border-radius: 8px;
  14. padding: 20px;
  15. background: hsl(var(--background));
  16. }
  17. &__card-label {
  18. display: block;
  19. font-size: 0.8125rem;
  20. color: hsl(var(--muted-foreground));
  21. margin-bottom: 6px;
  22. }
  23. &__card-value {
  24. font-size: 1.5rem;
  25. font-weight: 700;
  26. color: hsl(var(--foreground));
  27. &--primary {
  28. color: hsl(var(--primary));
  29. }
  30. &--danger {
  31. color: var(--color-danger);
  32. }
  33. }
  34. // ── Account (계좌 관리) ──
  35. &__account-header {
  36. display: flex;
  37. justify-content: space-between;
  38. align-items: center;
  39. margin-bottom: 16px;
  40. }
  41. &__account-count {
  42. font-size: 0.875rem;
  43. color: hsl(var(--muted-foreground));
  44. }
  45. &__account-list {
  46. display: flex;
  47. flex-direction: column;
  48. gap: 12px;
  49. }
  50. &__account-card {
  51. display: flex;
  52. justify-content: space-between;
  53. align-items: center;
  54. border: 1px solid hsl(var(--border));
  55. border-radius: 8px;
  56. padding: 20px 24px;
  57. background: hsl(var(--background));
  58. gap: 16px;
  59. }
  60. &__account-empty {
  61. border: 1px solid hsl(var(--border));
  62. border-radius: 8px;
  63. padding: 48px 24px;
  64. text-align: center;
  65. color: hsl(var(--muted-foreground));
  66. font-size: 0.875rem;
  67. }
  68. &__account-box {
  69. border: 1px solid hsl(var(--border));
  70. border-radius: 8px;
  71. padding: 24px;
  72. max-width: 560px;
  73. margin-bottom: 24px;
  74. }
  75. &__account-form-title {
  76. font-size: 1rem;
  77. font-weight: 600;
  78. margin-bottom: 16px;
  79. color: hsl(var(--foreground));
  80. }
  81. &__account-info {
  82. display: flex;
  83. flex-direction: column;
  84. gap: 8px;
  85. min-width: 0;
  86. }
  87. &__account-bank {
  88. font-size: 1.125rem;
  89. font-weight: 600;
  90. color: hsl(var(--foreground));
  91. }
  92. &__account-detail {
  93. font-size: 0.875rem;
  94. color: hsl(var(--muted-foreground));
  95. }
  96. &__account-status {
  97. display: flex;
  98. align-items: center;
  99. gap: 6px;
  100. margin-top: 4px;
  101. font-size: 0.8125rem;
  102. &--verified {
  103. color: var(--color-success);
  104. }
  105. &--unverified {
  106. color: var(--color-warning);
  107. }
  108. }
  109. &__account-actions {
  110. display: flex;
  111. gap: 8px;
  112. flex-shrink: 0;
  113. }
  114. // ── Account Form ──
  115. &__form {
  116. display: flex;
  117. flex-direction: column;
  118. gap: 16px;
  119. }
  120. &__field {
  121. display: flex;
  122. flex-direction: column;
  123. gap: 6px;
  124. }
  125. &__label {
  126. font-size: 0.875rem;
  127. font-weight: 500;
  128. color: hsl(var(--foreground));
  129. }
  130. &__select,
  131. &__input {
  132. width: 100%;
  133. padding: 8px 12px;
  134. border: 1px solid hsl(var(--border));
  135. border-radius: calc(var(--radius) - 2px);
  136. background: hsl(var(--background));
  137. color: hsl(var(--foreground));
  138. font-size: 0.875rem;
  139. &::placeholder {
  140. color: hsl(var(--muted-foreground));
  141. }
  142. &:disabled {
  143. opacity: 0.5;
  144. cursor: not-allowed;
  145. }
  146. }
  147. &__select {
  148. appearance: none;
  149. background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23999' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
  150. background-repeat: no-repeat;
  151. background-position: right 12px center;
  152. padding-right: 32px;
  153. }
  154. &__notice {
  155. margin-top: 4px;
  156. li {
  157. font-size: 0.8125rem;
  158. color: hsl(var(--muted-foreground));
  159. padding: 2px 0;
  160. &::before {
  161. content: '※ ';
  162. }
  163. }
  164. }
  165. &__btn {
  166. display: inline-flex;
  167. align-items: center;
  168. justify-content: center;
  169. padding: 10px 32px;
  170. border: 1px solid hsl(var(--border));
  171. border-radius: calc(var(--radius) - 2px);
  172. font-size: 0.875rem;
  173. font-weight: 500;
  174. cursor: pointer;
  175. background: hsl(var(--background));
  176. color: hsl(var(--foreground));
  177. transition: background-color 0.15s;
  178. &:hover:not(:disabled) {
  179. background: hsl(var(--accent));
  180. }
  181. &--primary {
  182. background: hsl(var(--primary));
  183. color: hsl(var(--primary-foreground));
  184. border-color: hsl(var(--primary));
  185. &:hover:not(:disabled) {
  186. background: hsl(var(--primary) / 0.9);
  187. }
  188. }
  189. &--cancel {
  190. background: transparent;
  191. }
  192. &--danger {
  193. color: var(--color-danger);
  194. border-color: var(--color-danger);
  195. &:hover:not(:disabled) {
  196. background: hsl(0 84% 60% / 0.1);
  197. }
  198. }
  199. &:disabled {
  200. opacity: 0.5;
  201. cursor: not-allowed;
  202. }
  203. }
  204. // ── Tax (원천징수 내역) ──
  205. &__year-select {
  206. display: flex;
  207. align-items: center;
  208. gap: 8px;
  209. margin-bottom: 20px;
  210. label {
  211. font-size: 0.875rem;
  212. font-weight: 500;
  213. color: hsl(var(--foreground));
  214. }
  215. select {
  216. padding: 6px 32px 6px 12px;
  217. border: 1px solid hsl(var(--border));
  218. border-radius: calc(var(--radius) - 2px);
  219. background: hsl(var(--background));
  220. color: hsl(var(--foreground));
  221. font-size: 0.875rem;
  222. appearance: none;
  223. background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23999' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
  224. background-repeat: no-repeat;
  225. background-position: right 10px center;
  226. }
  227. }
  228. &__section-title {
  229. font-size: 1rem;
  230. font-weight: 600;
  231. margin-bottom: 12px;
  232. color: hsl(var(--foreground));
  233. }
  234. // ── Table ──
  235. &__table-wrap {
  236. border: 1px solid hsl(var(--border));
  237. border-radius: 8px;
  238. overflow: hidden;
  239. margin-bottom: 24px;
  240. }
  241. &__table {
  242. width: 100%;
  243. border-collapse: collapse;
  244. th, td {
  245. padding: 12px 16px;
  246. text-align: left;
  247. border-bottom: 1px solid hsl(var(--border));
  248. font-size: 0.875rem;
  249. }
  250. th {
  251. background-color: hsl(var(--muted));
  252. font-weight: 600;
  253. color: hsl(var(--muted-foreground));
  254. white-space: nowrap;
  255. }
  256. tr:last-child td {
  257. border-bottom: none;
  258. }
  259. tr:hover td {
  260. background-color: hsl(var(--accent));
  261. }
  262. td[colspan] {
  263. text-align: center;
  264. }
  265. }
  266. &__amount {
  267. &--plus {
  268. color: var(--color-success);
  269. font-weight: 600;
  270. }
  271. &--minus {
  272. color: var(--color-danger);
  273. font-weight: 600;
  274. }
  275. }
  276. &__empty {
  277. padding: 40px;
  278. text-align: center;
  279. color: hsl(var(--muted-foreground));
  280. }
  281. // ── Tax Guide ──
  282. &__guide {
  283. border: 1px solid hsl(var(--border));
  284. border-radius: 8px;
  285. padding: 20px 24px;
  286. background: hsl(var(--muted) / 0.3);
  287. }
  288. &__guide-title {
  289. display: flex;
  290. align-items: center;
  291. gap: 8px;
  292. font-size: 0.9375rem;
  293. font-weight: 600;
  294. color: hsl(var(--foreground));
  295. margin-bottom: 12px;
  296. }
  297. &__guide-list {
  298. li {
  299. font-size: 0.8125rem;
  300. color: hsl(var(--muted-foreground));
  301. padding: 3px 0;
  302. padding-left: 14px;
  303. position: relative;
  304. &::before {
  305. content: '·';
  306. position: absolute;
  307. left: 0;
  308. font-weight: 700;
  309. }
  310. }
  311. }
  312. // ── Responsive ──
  313. @media (max-width: 768px) {
  314. &__cards {
  315. grid-template-columns: 1fr 1fr;
  316. }
  317. &__card {
  318. padding: 14px;
  319. }
  320. &__card-value {
  321. font-size: 1.25rem;
  322. }
  323. &__account-box {
  324. max-width: none;
  325. }
  326. &__account-card {
  327. flex-direction: column;
  328. align-items: flex-start;
  329. }
  330. &__account-actions {
  331. width: 100%;
  332. .settlement__btn {
  333. flex: 1;
  334. }
  335. }
  336. &__table-wrap {
  337. overflow-x: auto;
  338. }
  339. &__table {
  340. min-width: 640px;
  341. th, td {
  342. padding: 10px 12px;
  343. font-size: 0.8125rem;
  344. }
  345. }
  346. &__guide {
  347. padding: 16px;
  348. }
  349. }
  350. }