@import url('https://cdn.jsdelivr.net/gh/orioncactus/pretendard@v1.3.9/dist/web/static/pretendard.min.css'); @import "tailwindcss"; @variant dark (&:is(.dark *)); @variant senior (&:is(.senior *)); :root { --font-size: 16px; /* Clean minimalist background */ --background: #FAFAFA; --foreground: #1A1A1A; --card: #FFFFFF; --card-foreground: #1A1A1A; --popover: #FFFFFF; --popover-foreground: #1A1A1A; /* Modern blue primary palette */ --primary: #3B82F6; --primary-foreground: #FFFFFF; --secondary: #F1F5F9; --secondary-foreground: #1A1A1A; --muted: #F8FAFC; --muted-foreground: #6B7280; --accent: #F0F9FF; --accent-foreground: #1A1A1A; /* Clean destructive color */ --destructive: #EF4444; --destructive-foreground: #FFFFFF; --border: #E2E8F0; --input: #FFFFFF; --input-background: #F8FAFC; --switch-background: #F1F5F9; --font-weight-medium: 500; --font-weight-normal: 400; --ring: rgba(59, 130, 246, 0.3); /* Clean chart colors */ --chart-1: #3B82F6; --chart-2: #10B981; --chart-3: #F59E0B; --chart-4: #EF4444; --chart-5: #8B5CF6; /* Minimal rounded corners */ --radius: 0.75rem; /* Clean sidebar */ --sidebar: #FFFFFF; --sidebar-foreground: #1A1A1A; --sidebar-primary: #3B82F6; --sidebar-primary-foreground: #FFFFFF; --sidebar-accent: #F0F9FF; --sidebar-accent-foreground: #1A1A1A; --sidebar-border: #E2E8F0; --sidebar-ring: rgba(59, 130, 246, 0.3); /* Clean design tokens */ --clean-blur: blur(8px); --clean-shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.05); --clean-shadow: 0 1px 3px rgba(0, 0, 0, 0.1), 0 1px 2px rgba(0, 0, 0, 0.06); --clean-shadow-lg: 0 4px 6px rgba(0, 0, 0, 0.07), 0 2px 4px rgba(0, 0, 0, 0.06); --clean-shadow-xl: 0 10px 15px rgba(0, 0, 0, 0.1), 0 4px 6px rgba(0, 0, 0, 0.05); } .dark { /* Clean dark theme */ --background: #0F172A; --foreground: #F8FAFC; --card: #1E293B; --card-foreground: #F8FAFC; --popover: #1E293B; --popover-foreground: #F8FAFC; --primary: #60A5FA; --primary-foreground: #1E293B; --secondary: #334155; --secondary-foreground: #F8FAFC; --muted: #475569; --muted-foreground: #94A3B8; --accent: #1E40AF; --accent-foreground: #F8FAFC; --destructive: #F87171; --destructive-foreground: #1E293B; --border: #334155; --input: #1E293B; --input-background: #334155; --switch-background: #475569; --ring: rgba(96, 165, 250, 0.3); /* Dark mode chart colors */ --chart-1: #60A5FA; --chart-2: #34D399; --chart-3: #FBBF24; --chart-4: #F87171; --chart-5: #A78BFA; /* Dark sidebar */ --sidebar: #1E293B; --sidebar-foreground: #F8FAFC; --sidebar-primary: #60A5FA; --sidebar-primary-foreground: #1E293B; --sidebar-accent: #1E40AF; --sidebar-accent-foreground: #F8FAFC; --sidebar-border: #334155; --sidebar-ring: rgba(96, 165, 250, 0.3); /* Dark mode clean shadows */ --clean-shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.3); --clean-shadow: 0 1px 3px rgba(0, 0, 0, 0.4), 0 1px 2px rgba(0, 0, 0, 0.3); --clean-shadow-lg: 0 4px 6px rgba(0, 0, 0, 0.3), 0 2px 4px rgba(0, 0, 0, 0.2); --clean-shadow-xl: 0 10px 15px rgba(0, 0, 0, 0.4), 0 4px 6px rgba(0, 0, 0, 0.2); } .senior { /* Senior-friendly theme - High contrast, larger text */ --font-size: 18px; --background: #FFFFFF; --foreground: #000000; --card: #FFFFFF; --card-foreground: #000000; --popover: #FFFFFF; --popover-foreground: #000000; /* High contrast primary */ --primary: #2563EB; --primary-foreground: #FFFFFF; --secondary: #E5E7EB; --secondary-foreground: #000000; --muted: #F3F4F6; --muted-foreground: #374151; --accent: #DBEAFE; --accent-foreground: #000000; /* High contrast destructive */ --destructive: #DC2626; --destructive-foreground: #FFFFFF; --border: #9CA3AF; --input: #FFFFFF; --input-background: #F9FAFB; --switch-background: #E5E7EB; --font-weight-medium: 600; --font-weight-normal: 500; --ring: rgba(37, 99, 235, 0.5); /* Senior mode chart colors - High contrast */ --chart-1: #2563EB; --chart-2: #059669; --chart-3: #D97706; --chart-4: #DC2626; --chart-5: #7C3AED; /* Senior sidebar */ --sidebar: #FFFFFF; --sidebar-foreground: #000000; --sidebar-primary: #2563EB; --sidebar-primary-foreground: #FFFFFF; --sidebar-accent: #DBEAFE; --sidebar-accent-foreground: #000000; --sidebar-border: #9CA3AF; --sidebar-ring: rgba(37, 99, 235, 0.5); /* Larger shadows for better depth perception */ --clean-shadow: 0 2px 4px rgba(0, 0, 0, 0.15), 0 2px 3px rgba(0, 0, 0, 0.1); --clean-shadow-lg: 0 6px 8px rgba(0, 0, 0, 0.12), 0 3px 5px rgba(0, 0, 0, 0.08); } @theme inline { --color-background: var(--background); --color-foreground: var(--foreground); --color-card: var(--card); --color-card-foreground: var(--card-foreground); --color-popover: var(--popover); --color-popover-foreground: var(--popover-foreground); --color-primary: var(--primary); --color-primary-foreground: var(--primary-foreground); --color-secondary: var(--secondary); --color-secondary-foreground: var(--secondary-foreground); --color-muted: var(--muted); --color-muted-foreground: var(--muted-foreground); --color-accent: var(--accent); --color-accent-foreground: var(--accent-foreground); --color-destructive: var(--destructive); --color-destructive-foreground: var(--destructive-foreground); --color-border: var(--border); --color-input: var(--input); --color-input-background: var(--input-background); --color-switch-background: var(--switch-background); --color-ring: var(--ring); --color-chart-1: var(--chart-1); --color-chart-2: var(--chart-2); --color-chart-3: var(--chart-3); --color-chart-4: var(--chart-4); --color-chart-5: var(--chart-5); --radius-sm: calc(var(--radius) - 4px); --radius-md: calc(var(--radius) - 2px); --radius-lg: var(--radius); --radius-xl: calc(var(--radius) + 4px); --color-sidebar: var(--sidebar); --color-sidebar-foreground: var(--sidebar-foreground); --color-sidebar-primary: var(--sidebar-primary); --color-sidebar-primary-foreground: var(--sidebar-primary-foreground); --color-sidebar-accent: var(--sidebar-accent); --color-sidebar-accent-foreground: var(--sidebar-accent-foreground); --color-sidebar-border: var(--sidebar-border); --color-sidebar-ring: var(--sidebar-ring); } @layer base { * { @apply border-border outline-ring/50; font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, Roboto, 'Helvetica Neue', 'Segoe UI', 'Apple SD Gothic Neo', 'Noto Sans KR', 'Malgun Gothic', sans-serif; } html { /* 🔧 Always show scrollbar to prevent layout shift */ /*overflow-y: scroll;*/ } body { @apply bg-background text-foreground; font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, Roboto, 'Helvetica Neue', 'Segoe UI', 'Apple SD Gothic Neo', 'Noto Sans KR', 'Malgun Gothic', sans-serif; font-feature-settings: "kern" 1, "liga" 1, "calt" 1; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-rendering: optimizeLegibility; background: var(--background); min-height: 100vh; /* 🔧 Body has no overflow - html handles all scrolling */ overflow: visible !important; } /* 🔧 Override Radix's scroll-lock completely to prevent any layout shift */ body[data-scroll-locked] { /*overflow: visible !important;*/ /*position: static !important;*/ /*padding-right: 0 !important;*/ margin-right: 0 !important; } /* 🔧 Prevent scroll on modal backdrop instead of body */ [data-radix-portal] { /*position: fixed;*/ } /* Clean glass utilities */ .clean-glass { backdrop-filter: var(--clean-blur); -webkit-backdrop-filter: var(--clean-blur); background: rgba(255, 255, 255, 0.95); border: 1px solid var(--border); position: relative; } .dark .clean-glass { background: rgba(30, 41, 59, 0.95); border: 1px solid var(--border); } /* Clean shadows */ .clean-shadow-sm { box-shadow: var(--clean-shadow-sm); } .clean-shadow { box-shadow: var(--clean-shadow); } .clean-shadow-lg { box-shadow: var(--clean-shadow-lg); } .clean-shadow-xl { box-shadow: var(--clean-shadow-xl); } /* Smooth transitions for all interactive elements */ * { transition: all 0.2s cubic-bezier(0.25, 0.46, 0.45, 0.94); } /* Custom scrollbar */ ::-webkit-scrollbar { width: 8px; height: 8px; } ::-webkit-scrollbar-track { background: transparent; } ::-webkit-scrollbar-thumb { background: rgba(0, 0, 0, 0.2); border-radius: 4px; } .dark ::-webkit-scrollbar-thumb { background: rgba(255, 255, 255, 0.2); } ::-webkit-scrollbar-thumb:hover { background: rgba(0, 0, 0, 0.3); } .dark ::-webkit-scrollbar-thumb:hover { background: rgba(255, 255, 255, 0.3); } /* Sidebar scroll - hide by default, show on hover */ .sidebar-scroll::-webkit-scrollbar { width: 6px; } .sidebar-scroll::-webkit-scrollbar-track { background: transparent; } .sidebar-scroll::-webkit-scrollbar-thumb { background: transparent; border-radius: 3px; transition: background 0.2s ease; } .sidebar-scroll:hover::-webkit-scrollbar-thumb { background: rgba(0, 0, 0, 0.15); } .dark .sidebar-scroll:hover::-webkit-scrollbar-thumb { background: rgba(255, 255, 255, 0.15); } .sidebar-scroll::-webkit-scrollbar-thumb:hover { background: rgba(0, 0, 0, 0.25) !important; } .dark .sidebar-scroll::-webkit-scrollbar-thumb:hover { background: rgba(255, 255, 255, 0.25) !important; } /* Firefox */ .sidebar-scroll { scrollbar-width: thin; scrollbar-color: transparent transparent; } .sidebar-scroll:hover { scrollbar-color: rgba(0, 0, 0, 0.15) transparent; } .dark .sidebar-scroll:hover { scrollbar-color: rgba(255, 255, 255, 0.15) transparent; } } /* Clean modern component styles */ @layer components { .clean-input { @apply bg-input-background border border-border rounded-lg px-4 py-3; @apply focus:bg-card focus:border-primary focus:ring-2 focus:ring-primary/20; @apply transition-all duration-200 ease-out; } .clean-input::placeholder { @apply text-muted-foreground; } .clean-button { @apply rounded-lg px-6 py-3 font-medium transition-colors duration-200; @apply bg-primary text-primary-foreground hover:bg-primary/90; } .clean-button-secondary { @apply rounded-lg px-6 py-3 font-medium transition-colors duration-200; @apply bg-secondary text-secondary-foreground hover:bg-secondary/80; } .clean-card { @apply bg-card border border-border rounded-lg p-6; @apply transition-shadow duration-200; box-shadow: var(--clean-shadow); } .clean-card:hover { box-shadow: var(--clean-shadow-lg); } } html { font-size: var(--font-size); }