| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266 |
- @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);
- }
- }
|