@import url('https://fonts.googleapis.com/css2?family=Outfit:wght@300;400;500;600;700&family=Sarabun:wght@300;400;500;600;700&display=swap'); :root { --color-primary: #10b981; /* Emerald 500 */ --color-primary-dark: #059669; /* Emerald 600 */ --color-secondary: #06b6d4; /* Cyan 500 */ --color-accent: #f59e0b; /* Amber 500 */ --color-danger: #ef4444; /* Red 500 */ --color-success: #10b981; /* Emerald 500 */ --bg-gradient-light: linear-gradient(135deg, #ecfdf5 0%, #f0fdf4 50%, #e0f2fe 100%); --bg-gradient-dark: linear-gradient(135deg, #0f172a 0%, #064e3b 50%, #0c4a6e 100%); --glass-bg-light: rgba(255, 255, 255, 0.75); --glass-border-light: rgba(255, 255, 255, 0.6); --glass-shadow-light: 0 10px 30px -10px rgba(16, 185, 129, 0.15); --glass-bg-dark: rgba(15, 23, 42, 0.75); --glass-border-dark: rgba(255, 255, 255, 0.12); --glass-shadow-dark: 0 10px 30px -10px rgba(0, 0, 0, 0.5); --font-main: 'Sarabun', 'Outfit', -apple-system, BlinkMacSystemFont, sans-serif; --transition-smooth: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); } [x-cloak] { display: none !important; } body { font-family: var(--font-main); margin: 0; padding: 0; min-height: 100vh; transition: background 0.5s ease, color 0.5s ease; overflow-x: hidden; } /* Light Theme */ body.theme-light { background: var(--bg-gradient-light); color: #1e293b; } body.theme-light .glass-card, body.theme-light .glass-nav, body.theme-light .glass-modal { background: var(--glass-bg-light); backdrop-filter: blur(16px) saturate(180%); -webkit-backdrop-filter: blur(16px) saturate(180%); border: 1px solid var(--glass-border-light); box-shadow: var(--glass-shadow-light); } body.theme-light .text-subtle { color: #64748b; } /* Dark Theme */ body.theme-dark { background: var(--bg-gradient-dark); color: #f8fafc; } body.theme-dark .glass-card, body.theme-dark .glass-nav, body.theme-dark .glass-modal { background: var(--glass-bg-dark); backdrop-filter: blur(16px) saturate(180%); -webkit-backdrop-filter: blur(16px) saturate(180%); border: 1px solid var(--glass-border-dark); box-shadow: var(--glass-shadow-dark); } body.theme-dark .text-subtle { color: #94a3b8; } /* Glassmorphism Interactive Elements */ .glass-btn-primary { background: linear-gradient(135deg, var(--color-primary) 0%, var(--color-secondary) 100%); color: white; border: none; font-weight: 600; padding: 0.625rem 1.25rem; border-radius: 0.75rem; box-shadow: 0 4px 14px 0 rgba(16, 185, 129, 0.39); transition: var(--transition-smooth); cursor: pointer; display: inline-flex; align-items: center; justify-content: center; gap: 0.5rem; } .glass-btn-primary:hover { transform: translateY(-2px); box-shadow: 0 6px 20px rgba(16, 185, 129, 0.55); } .glass-btn-primary:active { transform: translateY(0); } .glass-input { width: 100%; padding: 0.75rem 1rem; border-radius: 0.75rem; transition: var(--transition-smooth); font-size: 0.95rem; } body.theme-light .glass-input { background: rgba(255, 255, 255, 0.8); border: 1px solid #cbd5e1; color: #0f172a; } body.theme-dark .glass-input { background: rgba(30, 41, 59, 0.7); border: 1px solid #334155; color: #f8fafc; } .glass-input:focus { outline: none; border-color: var(--color-primary); box-shadow: 0 0 0 3px rgba(16, 185, 129, 0.25); } /* Animations & Micro-Interactions */ @keyframes pulse-glow { 0%, 100% { box-shadow: 0 0 15px rgba(16, 185, 129, 0.4); } 50% { box-shadow: 0 0 25px rgba(6, 182, 212, 0.7); } } @keyframes slide-up { from { opacity: 0; transform: translateY(15px); } to { opacity: 1; transform: translateY(0); } } @keyframes float { 0%, 100% { transform: translateY(0px); } 50% { transform: translateY(-6px); } } .animate-slide-up { animation: slide-up 0.4s ease-out forwards; } .animate-float { animation: float 4s ease-in-out infinite; } .animate-pulse-glow { animation: pulse-glow 3s infinite; } /* Custom Scrollbar */ ::-webkit-scrollbar { width: 8px; height: 8px; } ::-webkit-scrollbar-track { background: transparent; } ::-webkit-scrollbar-thumb { background: rgba(148, 163, 184, 0.4); border-radius: 4px; } ::-webkit-scrollbar-thumb:hover { background: var(--color-primary); } /* Accessibility WCAG 2.1 Focus Rings */ a:focus-visible, button:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible { outline: 2px solid var(--color-primary) !important; outline-offset: 2px !important; }