globals.scss 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. @use './styles/tokens';
  2. @tailwind base;
  3. @tailwind components;
  4. @tailwind utilities;
  5. html {
  6. min-height: 100vh;
  7. min-height: 100dvh;
  8. width: 100%;
  9. min-width: 355px;
  10. }
  11. body {
  12. min-height: 100vh;
  13. min-height: 100dvh;
  14. width: 100%;
  15. min-width: 355px;
  16. overflow-x: hidden;
  17. overflow-y: auto;
  18. margin: 0;
  19. padding: 0;
  20. }
  21. // 컬러/레이아웃/밀도 CSS 변수는 app/styles/tokens/* 로 이동 (D6 디자인 토큰 — 다크 기본)
  22. @layer base {
  23. * {
  24. @apply border-border;
  25. }
  26. body {
  27. @apply bg-background text-foreground;
  28. }
  29. }
  30. // 접근성 — 키보드 포커스 링 (마우스 클릭에는 미적용, 포인트 컬러 토큰)
  31. :focus-visible {
  32. outline: var(--focus-ring-width) solid var(--focus-ring-color);
  33. outline-offset: 1px;
  34. }
  35. // 숫자 정렬 — 테이블 전역 tabular figures (폰트 추가 없이, D6 §3.3)
  36. table {
  37. font-variant-numeric: tabular-nums;
  38. }
  39. select, input, textarea {
  40. font-size: 1rem;
  41. padding: 5px;
  42. color: var(--text-primary);
  43. background: var(--bg-input);
  44. border: 1px solid var(--border-strong);
  45. border-radius: 3px;
  46. line-height: inherit;
  47. transition: border-color 0.3s ease;
  48. &:focus,
  49. &:hover {
  50. outline: none;
  51. border-color: var(--text-link);
  52. }
  53. &:focus {
  54. -webkit-box-shadow: inset 1px 2px 2px rgba(0, 0, 0, 0.05), 0 0 4px rgba(44, 112, 170, 0.8);
  55. box-shadow: inset 1px 2px 2px rgba(0, 0, 0, 0.05), 0 0 4px rgba(44, 112, 170, 0.8);
  56. }
  57. }
  58. // shadcn 폼 컨트롤 포커스 글로우 (Select trigger, Checkbox 등)
  59. [role="input"]
  60. [role="combobox"],
  61. [role="checkbox"] {
  62. transition: border-color 0.3s ease;
  63. &:focus,
  64. &:hover {
  65. outline: none;
  66. border-color: var(--text-link);
  67. }
  68. &:focus {
  69. -webkit-box-shadow: inset 1px 2px 2px rgba(0, 0, 0, 0.05), 0 0 4px rgba(44, 112, 170, 0.8);
  70. box-shadow: inset 1px 2px 2px rgba(0, 0, 0, 0.05), 0 0 4px rgba(44, 112, 170, 0.8);
  71. }
  72. }
  73. // 모든 버튼 속성값
  74. .btn {
  75. display: inline-block;
  76. padding: 5px 15px;
  77. border-radius: 4px;
  78. height: auto;
  79. text-align: center;
  80. cursor: pointer;
  81. }
  82. // 기본 버튼
  83. .btn-default {
  84. color: var(--text-primary);
  85. background: var(--bg-subtle);
  86. border: 1px solid var(--btn-default-border);
  87. -webkit-box-shadow: inset 0 -1px 0 0 var(--btn-default-border);
  88. box-shadow: inset 0 -1px 0 0 var(--btn-default-border);
  89. &:hover {
  90. background: var(--btn-default-hover);
  91. }
  92. }
  93. // 제출/Primary 버튼 — 포인트 컬러 1개 원칙: --btn-primary 는 --az-accent 로 수렴 (tokens/_colors.scss)
  94. .btn-primary {
  95. color: var(--btn-primary-text, #fff);
  96. background: var(--btn-primary);
  97. border: 1px solid var(--btn-primary);
  98. -webkit-box-shadow: inset 0 -2px 0 0 var(--btn-primary-shadow);
  99. box-shadow: inset 0 -2px 0 0 var(--btn-primary-shadow);
  100. &:hover {
  101. background: var(--btn-primary-hover);
  102. border-color: var(--btn-primary-hover);
  103. }
  104. }