:root{--brand-50: #EEF2FF;--brand-200: #C7D2FE;--brand-500: #6366F1;--brand-700: #4F46E5;--accent-400: #8B5CF6;--accent-500: #8B5CF6;--accent-600: #7C3AED;--accent-pink: #EC4899;--dark-primary: #1E1B4B;--dark-blue: #3730A3;--neutral-bg: #FAFAFA;--neutral-border: #F3F4F6;--neutral-muted: #6B7280;--neutral-text: #1F2937;--neutral-text-2: #4B5563;--success: #10B981;--success-bg: #ECFDF5;--success-border: #A7F3D0;--warning: #F59E0B;--warning-bg: #FFFBEB;--warning-border: #FDE68A;--danger: #EF4444;--danger-bg: #FEF2F2;--danger-border: #FECACA;--text: var(--neutral-text);--text-2: var(--neutral-text-2);--text-3: var(--neutral-muted);--bg: #FFFFFF;--bg-2: var(--neutral-bg);--border: var(--neutral-border);--brand: var(--brand-500);--brand-2: var(--accent-500);--font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", "Helvetica Neue", sans-serif;--font-body: var(--font-sans);--text-h1: 3rem;--text-h2: 2rem;--text-h3: 1.25rem;--text-body: 1rem;--text-body-sm: .9375rem;--text-caption: .8125rem;--text-xs: .75rem;--leading-tight: 1.15;--leading-normal: 1.6;--leading-relaxed: 1.75;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.25rem;--space-6: 1.5rem;--space-8: 2rem;--space-10: 2.5rem;--space-12: 3rem;--space-16: 4rem;--space-20: 5rem;--space-24: 6rem;--radius-sm: 6px;--radius: 10px;--radius-md: 12px;--radius-lg: 16px;--radius-xl: 24px;--radius-full: 9999px;--shadow-sm: 0 1px 2px 0 rgb(0 0 0 / .05);--shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--shadow-md: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--shadow-lg: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--shadow-xl: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--shadow-brand: 0 4px 14px 0 rgba(99, 102, 241, .3);--max-w: 1200px;--section-px: 120px;--header-h: 64px;--ease-out: cubic-bezier(.16, 1, .3, 1);--ease-in-out: cubic-bezier(.65, 0, .35, 1);--duration-fast: .15s;--duration: .3s;--duration-slow: .5s}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}body{margin:0;padding:0;min-height:100vh;font-family:var(--font-body);font-size:var(--text-body);line-height:var(--leading-normal);color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#app{min-height:100vh}h1,h2,h3,h4,h5,h6{margin:0;font-family:var(--font-sans);font-weight:700;line-height:var(--leading-tight)}h1{font-size:var(--text-h1);font-weight:800;letter-spacing:-.02em}h2{font-size:var(--text-h2);font-weight:700}h3{font-size:var(--text-h3);font-weight:700}p{margin:0;color:var(--text-2)}a{color:var(--brand);text-decoration:none;transition:color var(--duration-fast) var(--ease-out)}a:hover{color:var(--brand-700)}small{font-size:var(--text-caption);color:var(--text-3)}img{max-width:100%;height:auto;display:block}.container{width:100%;max-width:var(--max-w);margin:0 auto;padding:0 var(--space-6)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.flex{display:flex}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-2{gap:var(--space-2)}.gap-3{gap:var(--space-3)}.gap-4{gap:var(--space-4)}.gap-6{gap:var(--space-6)}.gap-8{gap:var(--space-8)}.gap-10{gap:var(--space-10)}.grid{display:grid;gap:var(--space-6)}.grid-2{grid-template-columns:repeat(2,1fr)}.grid-3{grid-template-columns:repeat(3,1fr)}.grid-4{grid-template-columns:repeat(4,1fr)}.section{padding:80px var(--section-px)}.section-sm{padding:var(--space-12) 0}.section-header{text-align:center;margin-bottom:var(--space-12)}.section-header h2{margin-bottom:var(--space-3)}.section-header p{font-size:var(--text-body);max-width:600px;margin:0 auto}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);height:44px;padding:0 24px;border:2px solid transparent;border-radius:26px;font-family:var(--font-body);font-size:.9375rem;font-weight:600;line-height:1;cursor:pointer;text-decoration:none;transition:all var(--duration) var(--ease-out);white-space:nowrap;-webkit-user-select:none;user-select:none;background:var(--brand-500);color:#fff}.btn:hover{text-decoration:none;background:var(--brand-700);box-shadow:var(--shadow-brand);transform:translateY(-1px)}.btn:active{transform:translateY(0)}.btn:disabled{opacity:.5;cursor:not-allowed;transform:none}.btn.outline{background:#fff;color:var(--brand-700);border-color:var(--brand-200)}.btn.outline:hover{background:#f5f3ff;box-shadow:none}.btn.white-cta{background:#fff;color:var(--brand-700);box-shadow:var(--shadow)}.btn.white-cta:hover{box-shadow:var(--shadow-md)}.btn.ghost{background:transparent;color:var(--text-2);border-color:transparent}.btn.ghost:hover{background:var(--neutral-border);color:var(--text);box-shadow:none}.btn.danger{background:var(--danger);border-color:var(--danger);color:#fff}.btn.danger:hover{background:#dc2626;box-shadow:0 4px 14px #ef44444d}.btn.white-outline{background:transparent;color:#fff;border-color:#ffffff4d}.btn.white-outline:hover{background:#ffffff1a;border-color:#fff9;box-shadow:none;color:#fff}.btn.lg{height:52px;padding:0 32px;font-size:1.0625rem}.btn.sm{height:36px;padding:0 16px;font-size:.8125rem}.card{background:#fff;border:1px solid var(--neutral-border);border-radius:var(--radius-lg);padding:32px;transition:all var(--duration) var(--ease-out)}.card:hover{box-shadow:0 12px 40px #0000000f;transform:translateY(-4px)}.card-interactive{cursor:pointer}.card-interactive:hover{box-shadow:0 12px 40px #0000000f;transform:translateY(-4px);border-color:var(--brand-200)}.input,.select,.textarea{width:100%;padding:10px 14px;border:1px solid #D1D5DB;border-radius:var(--radius);font-family:var(--font-body);font-size:.9375rem;color:var(--text);background:#fff;outline:none;transition:all var(--duration-fast) var(--ease-out)}.input::placeholder,.textarea::placeholder{color:var(--neutral-muted)}.input:focus,.select:focus,.textarea:focus{border-color:var(--brand-500);box-shadow:0 0 0 3px #6366f11a}.input:hover:not(:focus):not(:disabled),.textarea:hover:not(:focus):not(:disabled){border-color:var(--neutral-muted)}.tag{display:inline-flex;align-items:center;padding:2px 10px;border-radius:var(--radius-full);font-size:var(--text-xs);font-weight:500;background:var(--neutral-border);color:var(--neutral-muted)}.tag.online,.tag.active{background:var(--success-bg);color:#065f46}.tag.offline,.tag.disabled{background:var(--danger-bg);color:#991b1b}.tag.admin{background:#ede9fe;color:#5b21b6}.tag.user{background:var(--brand-50);color:var(--brand-700)}.alert{display:flex;align-items:flex-start;gap:var(--space-2);padding:var(--space-3) var(--space-4);border-radius:var(--radius);font-size:var(--text-body-sm);line-height:var(--leading-normal);margin:var(--space-2) 0}.alert.error{background:var(--danger-bg);color:#991b1b;border:1px solid var(--danger-border)}.alert.success{background:var(--success-bg);color:#065f46;border:1px solid var(--success-border)}.alert.info{background:var(--brand-50);color:var(--brand-700);border:1px solid var(--brand-200)}table{width:100%;border-collapse:collapse;font-size:var(--text-body-sm)}table th,table td{text-align:left;padding:12px 16px;border-bottom:1px solid var(--neutral-border)}table th{background:var(--neutral-bg);font-weight:600;color:var(--text-2);font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.05em}table tr:hover td{background:var(--neutral-bg)}.muted{color:var(--text-2)}.divider{width:100%;height:1px;background:var(--neutral-border);margin:var(--space-8) 0}@keyframes fadeInUp{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes pulse{0%,to{box-shadow:0 0 #6366f166}50%{box-shadow:0 0 0 12px #6366f100}}@keyframes slideInRight{0%{opacity:0;transform:translate(24px)}to{opacity:1;transform:translate(0)}}@keyframes slideInLeft{0%{opacity:0;transform:translate(-24px)}to{opacity:1;transform:translate(0)}}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}.animate{opacity:0}.animate.visible{animation:fadeInUp var(--duration-slow) var(--ease-out) forwards}.stagger-1{animation-delay:0ms}.stagger-2{animation-delay:.1s}.stagger-3{animation-delay:.2s}.stagger-4{animation-delay:.3s}.stagger-5{animation-delay:.4s}.stagger-6{animation-delay:.5s}.pulse-anim{animation:pulse 2s infinite}.page-enter-active,.page-leave-active{transition:opacity var(--duration) var(--ease-out)}.page-enter-from,.page-leave-to{opacity:0}
