@tailwind base; @tailwind components; @tailwind utilities; html { min-height: 100vh; width: 100%; min-width: 355px; } body { min-height: 100vh; width: 100%; min-width: 355px; overflow-x: hidden; overflow-y: auto; margin: 0; padding: 0; } @layer base { :root { --background: 0 0% 100%; --foreground: 0 0% 3.9%; --card: 0 0% 100%; --card-foreground: 0 0% 3.9%; --popover: 0 0% 100%; --popover-foreground: 0 0% 3.9%; --primary: 0 0% 9%; --primary-foreground: 0 0% 98%; --secondary: 0 0% 96.1%; --secondary-foreground: 0 0% 9%; --muted: 0 0% 96.1%; --muted-foreground: 0 0% 45.1%; --accent: 0 0% 96.1%; --accent-foreground: 0 0% 9%; --destructive: 0 84.2% 60.2%; --destructive-foreground: 0 0% 98%; --border: 0 0% 89.8%; --input: 0 0% 89.8%; --ring: 215 100% 50%; --chart-1: 12 76% 61%; --chart-2: 173 58% 39%; --chart-3: 197 37% 24%; --chart-4: 43 74% 66%; --chart-5: 27 87% 67%; --radius: 0.5rem; --crypto-up: 0 70% 55%; --crypto-down: 220 70% 55%; --crypto-neutral: 0 0% 50%; /* 시맨틱 색상 변수 */ --text-normal: #f1f1f1; --text-primary: #141414; --text-secondary: #666; --text-muted: #999; --text-link: #0060a9; --text-link-hover: #c7511f; --text-head: #e5e5e5; --bg-page: #fff; --bg-elevated: #f9f9f9; --bg-subtle: #f4f4f4; --bg-input: #fff; --bg-head: #007bc3; --bg-icon: #004f7c; --border-default: #eaeaea; --border-light: #eee; --border-strong: #ccc; --shadow-color: rgba(0,0,0,0.12); --brand-orange: #F7931A; --brand-orange-hover: #e5851a; --color-danger: #d51b28; --color-success: #4caf50; --color-warning-bg: #fefce8; --color-warning-text: #92400e; --overlay-color: rgba(0,0,0,0.5); --sidebar-active-bg: #fff3e0; --list-row-active: #faffd1; --btn-default-border: #b3b3b3; --btn-default-hover: #e3e3e3; --btn-submit-shadow: #d38817; --outline-default: #c2c2c2; --fg-default: #0f0f0f; --color-blue: #3b82f6; --color-blue-hover: #2563eb; --color-blue-bg: rgba(59, 130, 246, 0.06); --color-danger-bg: #fee2e2; --color-danger-border: #fca5a5; --color-success-bg: #dcfce7; --color-success-text: #16a34a; --bg-subtle-hover: rgba(0, 0, 0, 0.05); --sidebar-background: 0 0% 98%; --sidebar-foreground: 240 5.3% 26.1%; --sidebar-primary: 240 5.9% 10%; --sidebar-primary-foreground: 0 0% 98%; --sidebar-accent: 240 4.8% 95.9%; --sidebar-accent-foreground: 240 5.9% 10%; --sidebar-border: 220 13% 91%; --sidebar-ring: 217.2 91.2% 59.8%; } .dark { --background: 0 0% 3.9%; --foreground: 0 0% 98%; --card: 0 0% 3.9%; --card-foreground: 0 0% 98%; --popover: 0 0% 3.9%; --popover-foreground: 0 0% 98%; --primary: 0 0% 98%; --primary-foreground: 0 0% 9%; --secondary: 0 0% 14.9%; --secondary-foreground: 0 0% 98%; --muted: 0 0% 14.9%; --muted-foreground: 0 0% 63.9%; --accent: 0 0% 14.9%; --accent-foreground: 0 0% 98%; --destructive: 0 62.8% 30.6%; --destructive-foreground: 0 0% 98%; --border: 0 0% 14.9%; --input: 0 0% 14.9%; --ring: 215 100% 60%; --chart-1: 220 70% 50%; --chart-2: 160 60% 45%; --chart-3: 30 80% 55%; --chart-4: 280 65% 60%; --chart-5: 340 75% 55%; --crypto-up: 0 70% 60%; --crypto-down: 220 70% 60%; --crypto-neutral: 0 0% 63.9%; /* 시맨틱 색상 변수 */ --text-normal: #f1f1f1; --text-primary: #cacaca; --text-secondary: #a3a3a3; --text-muted: #737373; --text-link: #60a5fa; --text-link-hover: #f59e0b; --text-head: #cacaca; --bg-page: #171717; --bg-elevated: #1e1e1e; --bg-subtle: #262626; --bg-input: #262626; --bg-head: #5603a3; --bg-icon: #3c00aa; --border-default: #333; --border-light: #2a2a2a; --border-strong: #444; --shadow-color: rgba(0,0,0,0.4); --brand-orange: #F7931A; --brand-orange-hover: #f59e0b; --color-danger: #ef4444; --color-success: #22c55e; --color-warning-bg: #422006; --color-warning-text: #fef08a; --overlay-color: rgba(0,0,0,0.7); --sidebar-active-bg: #3d2800; --list-row-active: #2a2a00; --btn-default-border: #555; --btn-default-hover: #333; --btn-submit-shadow: #b8700f; --fg-default: #f1f1f1; --color-blue: #60a5fa; --color-blue-hover: #3b82f6; --color-blue-bg: rgba(96, 165, 250, 0.1); --color-danger-bg: #3f1212; --color-danger-border: #7f1d1d; --color-success-bg: #0f2d1a; --color-success-text: #4ade80; --bg-subtle-hover: rgba(255, 255, 255, 0.05); --sidebar-background: 240 5.9% 10%; --sidebar-foreground: 240 4.8% 95.9%; --sidebar-primary: 224.3 76.3% 48%; --sidebar-primary-foreground: 0 0% 100%; --sidebar-accent: 240 3.7% 15.9%; --sidebar-accent-foreground: 240 4.8% 95.9%; --sidebar-border: 240 3.7% 15.9%; --sidebar-ring: 217.2 91.2% 59.8%; } } @layer base { * { @apply border-border; } body { @apply bg-background text-foreground; } } select, input, textarea { font-size: 1rem; padding: 5px; color: var(--text-primary); background: var(--bg-input); border: 1px solid var(--border-strong); border-radius: 3px; line-height: inherit; transition: border-color 0.3s ease; &:focus, &:hover { outline: none; border-color: var(--text-link); } &:focus { -webkit-box-shadow: inset 1px 2px 2px rgba(0, 0, 0, 0.05), 0 0 4px rgba(44, 112, 170, 0.8); box-shadow: inset 1px 2px 2px rgba(0, 0, 0, 0.05), 0 0 4px rgba(44, 112, 170, 0.8); } } // shadcn 폼 컨트롤 포커스 글로우 (Select trigger, Checkbox 등) [role="input"] [role="combobox"], [role="checkbox"] { transition: border-color 0.3s ease; &:focus, &:hover { outline: none; border-color: var(--text-link); } &:focus { -webkit-box-shadow: inset 1px 2px 2px rgba(0, 0, 0, 0.05), 0 0 4px rgba(44, 112, 170, 0.8); box-shadow: inset 1px 2px 2px rgba(0, 0, 0, 0.05), 0 0 4px rgba(44, 112, 170, 0.8); } } // 모든 버튼 속성값 .btn { display: inline-block; padding: 5px 15px; border-radius: 4px; height: auto; text-align: center; cursor: pointer; } // 기본 버튼 .btn-default { color: var(--text-primary); background: var(--bg-subtle); border: 1px solid var(--btn-default-border); -webkit-box-shadow: inset 0 -1px 0 0 var(--btn-default-border); box-shadow: inset 0 -1px 0 0 var(--btn-default-border); &:hover { background: var(--btn-default-hover); } } // 제출 버튼 .btn-submit { color: #fff; background: var(--brand-orange); border: 1px solid var(--brand-orange); -webkit-box-shadow: inset 0 -2px 0 0 var(--btn-submit-shadow); box-shadow: inset 0 -2px 0 0 var(--btn-submit-shadow); &:hover { background: var(--brand-orange-hover); border-color: var(--brand-orange-hover); } }