@import "tailwindcss"; :root { /* Warm, educational color palette */ --color-primary: #1e3a5f; --color-primary-light: #2d5a87; --color-accent: #e76f51; --color-accent-light: #f4a261; --color-success: #2a9d8f; --color-warning: #e9c46a; --color-background: #faf8f5; --color-surface: #ffffff; --color-text: #1a1a2e; --color-text-muted: #64748b; --color-border: #e2e0dc; /* Glassmorphism */ --glass-bg: rgba(255, 255, 255, 0.85); --glass-border: rgba(255, 255, 255, 0.5); color-scheme: light; } :root[data-color-scheme="dark"] { --color-primary: #5b8fb9; --color-primary-light: #7eb8da; --color-accent: #f4a261; --color-accent-light: #e76f51; --color-success: #4fd1c5; --color-warning: #fbd38d; --color-background: #0f172a; --color-surface: #1e293b; --color-text: #f1f5f9; --color-text-muted: #94a3b8; --color-border: #334155; --glass-bg: rgba(30, 41, 59, 0.85); --glass-border: rgba(51, 65, 85, 0.5); color-scheme: dark; } @media (prefers-color-scheme: dark) { :root:not([data-color-scheme]) { --color-primary: #5b8fb9; --color-primary-light: #7eb8da; --color-accent: #f4a261; --color-accent-light: #e76f51; --color-success: #4fd1c5; --color-warning: #fbd38d; --color-background: #0f172a; --color-surface: #1e293b; --color-text: #f1f5f9; --color-text-muted: #94a3b8; --color-border: #334155; --glass-bg: rgba(30, 41, 59, 0.85); --glass-border: rgba(51, 65, 85, 0.5); color-scheme: dark; } } @theme inline { --color-background: var(--color-background); --color-foreground: var(--color-text); --font-sans: 'Instrument Sans', system-ui, sans-serif; --font-display: 'Fraunces', Georgia, serif; } * { box-sizing: border-box; } html { scroll-behavior: smooth; } body { margin: 0; padding: 0; background: var(--color-background); color: var(--color-text); font-family: var(--font-sans); font-size: 16px; line-height: 1.6; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } /* Background pattern */ body::before { content: ''; position: fixed; top: 0; left: 0; right: 0; bottom: 0; background: radial-gradient(circle at 20% 20%, rgba(231, 111, 81, 0.08) 0%, transparent 50%), radial-gradient(circle at 80% 80%, rgba(42, 157, 143, 0.08) 0%, transparent 50%), radial-gradient(circle at 50% 50%, rgba(30, 58, 95, 0.05) 0%, transparent 70%); pointer-events: none; z-index: -1; } /* Typography */ h1, h2, h3, h4, h5, h6 { font-family: var(--font-display); font-weight: 600; line-height: 1.2; margin: 0; } /* Custom scrollbar */ ::-webkit-scrollbar { width: 8px; height: 8px; } ::-webkit-scrollbar-track { background: transparent; } ::-webkit-scrollbar-thumb { background: var(--color-border); border-radius: 4px; } ::-webkit-scrollbar-thumb:hover { background: var(--color-text-muted); } /* Button styles */ .btn { display: inline-flex; align-items: center; justify-content: center; gap: 0.5rem; padding: 0.75rem 1.5rem; font-family: var(--font-sans); font-weight: 600; font-size: 0.95rem; border-radius: 12px; border: none; cursor: pointer; transition: all 0.2s ease; text-decoration: none; } .btn-primary { background: linear-gradient(135deg, var(--color-primary) 0%, var(--color-primary-light) 100%); color: white; box-shadow: 0 4px 14px rgba(30, 58, 95, 0.25); } .btn-primary:hover { transform: translateY(-2px); box-shadow: 0 6px 20px rgba(30, 58, 95, 0.35); } .btn-accent { background: linear-gradient(135deg, var(--color-accent) 0%, var(--color-accent-light) 100%); color: white; box-shadow: 0 4px 14px rgba(231, 111, 81, 0.25); } .btn-accent:hover { transform: translateY(-2px); box-shadow: 0 6px 20px rgba(231, 111, 81, 0.35); } .btn-outline { background: transparent; color: var(--color-text); border: 2px solid var(--color-border); } .btn-outline:hover { border-color: var(--color-primary); color: var(--color-primary); } /* Card styles */ .card { background: var(--glass-bg); backdrop-filter: blur(20px); border: 1px solid var(--glass-border); border-radius: 20px; box-shadow: 0 4px 24px rgba(0, 0, 0, 0.06); } /* Input styles */ .input { width: 100%; padding: 0.875rem 1rem; font-family: var(--font-sans); font-size: 1rem; color: var(--color-text); background: var(--color-surface); border: 2px solid var(--color-border); border-radius: 12px; outline: none; transition: all 0.2s ease; } .input:focus { border-color: var(--color-primary); box-shadow: 0 0 0 4px rgba(30, 58, 95, 0.1); } .input::placeholder { color: var(--color-text-muted); } /* Badge styles */ .badge { display: inline-flex; align-items: center; gap: 0.25rem; padding: 0.25rem 0.75rem; font-size: 0.8rem; font-weight: 600; border-radius: 9999px; } .badge-success { background: rgba(42, 157, 143, 0.15); color: var(--color-success); } .badge-warning { background: rgba(233, 196, 106, 0.2); color: #b7791f; } /* Animations */ @keyframes fadeInUp { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } } @keyframes pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.6; } } @keyframes float { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-10px); } } .animate-fade-in-up { animation: fadeInUp 0.6s ease-out forwards; } .animate-pulse { animation: pulse 2s ease-in-out infinite; } .animate-float { animation: float 6s ease-in-out infinite; } /* Staggered animations */ .stagger-1 { animation-delay: 0.1s; } .stagger-2 { animation-delay: 0.2s; } .stagger-3 { animation-delay: 0.3s; } .stagger-4 { animation-delay: 0.4s; } .stagger-5 { animation-delay: 0.5s; } /* Utility classes */ .text-gradient { background: linear-gradient(135deg, var(--color-primary) 0%, var(--color-accent) 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; } /* ChatKit customization - Force Traditional Chinese */ .chatkit-container, [data-chatkit-composer] { /* Force zh-TW locale */ } /* Override ChatKit placeholder text to Traditional Chinese */ [data-chatkit-composer] textarea::placeholder, [data-chatkit-composer] input::placeholder, .chatkit-composer textarea::placeholder, .chatkit-composer input::placeholder { /* This may not work as ChatKit uses iframe */ } /* ChatKit customization */ .chatkit-container { --ck-color-primary: var(--color-primary); --ck-color-background: var(--color-surface); --ck-border-radius: 16px; display: flex; flex-direction: column; } /* Ensure ChatKit elements are visible */ .chatkit-container > * { min-height: 0; flex: 1; } /* Make sure the input area is always visible */ [data-chatkit-composer], [class*="composer"], [class*="Composer"] { position: relative !important; z-index: 10; }