*{margin:0;padding:0;box-sizing:border-box}:root{--color-bg: #fafafa;--color-surface: #ffffff;--color-border: #e5e7eb;--color-text-primary: #111827;--color-text-secondary: #6b7280;--color-text-muted: #9ca3af;--color-buddies: #3b82f6;--color-buddies-light: #dbeafe;--color-pulsora: #8b5cf6;--color-pulsora-light: #ede9fe;--color-success: #10b981;--color-danger: #ef4444;--space-xs: 4px;--space-sm: 8px;--space-md: 16px;--space-lg: 24px;--space-xl: 32px;--space-2xl: 48px;--font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-mono: "SF Mono", Menlo, Monaco, "Courier New", monospace}body{font-family:var(--font-sans);background:var(--color-bg);color:var(--color-text-primary);line-height:1.6;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#app{min-height:100vh}.container{max-width:1200px;margin:0 auto;padding:var(--space-2xl) var(--space-lg)}.container-narrow{max-width:800px;margin:0 auto;padding:var(--space-2xl) var(--space-lg)}h1{font-size:32px;font-weight:600;color:var(--color-text-primary);margin-bottom:var(--space-sm);letter-spacing:-.02em}h2{font-size:24px;font-weight:600;color:var(--color-text-primary);margin-bottom:var(--space-md);letter-spacing:-.01em}h3{font-size:18px;font-weight:500;color:var(--color-text-primary);margin-bottom:var(--space-sm)}p{font-size:15px;color:var(--color-text-secondary);line-height:1.6}.text-muted{color:var(--color-text-muted);font-size:14px}button{font-family:var(--font-sans);font-size:15px;font-weight:500;padding:12px 24px;border-radius:8px;border:none;cursor:pointer;transition:all .2s ease;display:inline-flex;align-items:center;gap:var(--space-sm)}button:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--color-buddies);color:#fff}.btn-primary:hover:not(:disabled){background:#2563eb;transform:translateY(-1px);box-shadow:0 4px 12px #3b82f64d}.btn-secondary{background:var(--color-surface);color:var(--color-text-primary);border:1px solid var(--color-border)}.btn-secondary:hover:not(:disabled){border-color:var(--color-text-secondary);background:#fafafa}.btn-danger{background:var(--color-danger);color:#fff}.btn-danger:hover:not(:disabled){background:#dc2626}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:12px;padding:var(--space-xl);transition:all .2s ease}.card:hover{box-shadow:0 4px 16px #00000014}.card-clickable{cursor:pointer}.card-clickable:hover{border-color:var(--color-text-secondary);transform:translateY(-2px)}input[type=text],textarea,select{font-family:var(--font-sans);font-size:15px;padding:12px 16px;border:1px solid var(--color-border);border-radius:8px;background:var(--color-surface);color:var(--color-text-primary);width:100%;transition:all .2s ease}input[type=text]:focus,textarea:focus,select:focus{outline:none;border-color:var(--color-buddies);box-shadow:0 0 0 3px var(--color-buddies-light)}textarea{min-height:120px;resize:vertical;font-family:var(--font-sans);line-height:1.6}label{display:block;font-size:14px;font-weight:500;color:var(--color-text-primary);margin-bottom:var(--space-sm)}.form-group{margin-bottom:var(--space-lg)}.helper-text{font-size:13px;color:var(--color-text-muted);margin-top:var(--space-sm)}.badge{display:inline-flex;align-items:center;padding:4px 12px;border-radius:6px;font-size:12px;font-weight:500;text-transform:uppercase;letter-spacing:.5px}.badge-buddies{background:var(--color-buddies-light);color:var(--color-buddies)}.badge-pulsora{background:var(--color-pulsora-light);color:var(--color-pulsora)}.badge-telegram{background:#e0f2fe;color:#0284c7}.mb-sm{margin-bottom:var(--space-sm)}.mb-md{margin-bottom:var(--space-md)}.mb-lg{margin-bottom:var(--space-lg)}.mb-xl{margin-bottom:var(--space-xl)}.mt-md{margin-top:var(--space-md)}.mt-lg{margin-top:var(--space-lg)}.flex{display:flex}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-between{justify-content:space-between}.gap-sm{gap:var(--space-sm)}.gap-md{gap:var(--space-md)}.gap-lg{gap:var(--space-lg)}.w-full{width:100%}.text-center{text-align:center}.loading,.empty-state{text-align:center;padding:var(--space-2xl);color:var(--color-text-muted)}.error-state{text-align:center;padding:var(--space-2xl);color:var(--color-danger)}
