:root{--color-primary-900: #0b2a6b;--color-primary-700: #1e47b8;--color-primary-500: #2f6bff;--color-primary-300: #7ba4ff;--color-primary-100: #e6eeff;--color-accent-600: #e8a317;--color-accent-400: #ffc940;--color-accent-100: #fff4d6;--color-success: #16a34a;--color-warning: #f59e0b;--color-danger: #dc2626;--color-info: #0ea5e9;--color-bg: #f4f6fb;--color-surface: #ffffff;--color-border: #e3e7ef;--color-text-primary: #0f172a;--color-text-secondary: #5a6478;--color-text-tertiary: #9099ab;--radius-sm: 8px;--radius-md: 12px;--radius-lg: 16px;--radius-xl: 24px;--radius-pill: 999px;--elev-1: 0 1px 2px rgba(15, 23, 42, .06);--elev-2: 0 4px 12px rgba(15, 23, 42, .08);--elev-3: 0 10px 24px rgba(15, 23, 42, .12);--duration-micro: .15s;--duration-standard: .24s;--duration-entrance: .36s;--easing-entrance: cubic-bezier(.2, .8, .2, 1);--gradient-hero: linear-gradient( 180deg, var(--color-primary-900) 0%, var(--color-primary-500) 100% );--font-sans: "IBM Plex Sans Thai", "Inter", -apple-system, BlinkMacSystemFont, system-ui, "Segoe UI", Roboto, sans-serif}html,body{background-color:var(--color-bg);color:var(--color-text-primary);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}.scrollbar-hide::-webkit-scrollbar{display:none}.scrollbar-hide{-ms-overflow-style:none;scrollbar-width:none}:where(button,a,input,textarea,[role=button]):focus-visible{outline:2px solid var(--color-primary-300);outline-offset:2px}.clamp-1{display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden}.clamp-2{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.clamp-3{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}@keyframes fade-in-up{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.animate-enter{animation:fade-in-up var(--duration-standard) var(--easing-entrance) both}@keyframes dot-bounce{0%,80%,to{transform:translateY(0);opacity:.35}40%{transform:translateY(-4px);opacity:1}}.dot-bounce>span{display:inline-block;width:6px;height:6px;border-radius:999px;background:var(--color-text-tertiary);margin:0 2px;animation:dot-bounce 1.2s infinite var(--easing-entrance)}.dot-bounce>span:nth-child(1){animation-delay:-.32s}.dot-bounce>span:nth-child(2){animation-delay:-.16s}@keyframes reward-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.04)}}.reward-pulse{animation:reward-pulse var(--duration-standard) var(--easing-entrance)}@media(prefers-reduced-motion:reduce){.animate-enter,.dot-bounce>span,.reward-pulse{animation:none!important}}
