Spaces:
Running
Running
ch möchte eine App erstellen die in erster Linie als trading Bot dient. Sie soll Handels Signale die durch pine script Strategien oder Indikatoren auf Tradingview generiert werden, per webhook an meine Exchange wie Bitget, Pionex oder Bybit weiterleiten. Die anbindung zur Exchange läuft über die Exchange Api.
c54a803
verified
| /* Custom CSS for TradeFlow Bot - Glassmorphism & Animations */ | |
| /* Custom Font Import */ | |
| @import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap'); | |
| /* Root Variables */ | |
| :root { | |
| --primary: #0ea5e9; /* sky-500 */ | |
| --primary-dark: #0284c7; /* sky-600 */ | |
| --secondary: #8b5cf6; /* violet-500 */ | |
| --success: #10b981; /* emerald-500 */ | |
| --danger: #ef4444; /* red-500 */ | |
| --warning: #f59e0b; /* amber-500 */ | |
| } | |
| /* Base Styles */ | |
| body { | |
| font-family: 'Inter', sans-serif; | |
| } | |
| /* Glassmorphism Cards */ | |
| .glass-card { | |
| background: rgba(30, 41, 59, 0.6); /* slate-800 with opacity */ | |
| backdrop-filter: blur(12px); | |
| -webkit-backdrop-filter: blur(12px); | |
| border: 1px solid rgba(148, 163, 184, 0.1); /* slate-400 with opacity */ | |
| box-shadow: 0 8px 32px rgba(2, 8, 20, 0.4); | |
| transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); | |
| } | |
| .glass-card:hover { | |
| border-color: rgba(148, 163, 184, 0.2); | |
| box-shadow: 0 12px 40px rgba(2, 132, 199, 0.25); /* sky-600 with opacity */ | |
| transform: translateY(-2px); | |
| } | |
| /* Gradient Background */ | |
| .gradient-bg { | |
| background: linear-gradient(135deg, rgba(2, 6, 23, 0.9) 0%, rgba(15, 23, 42, 0.9) 100%); | |
| background-attachment: fixed; | |
| } | |
| /* Live Indicator Animation */ | |
| .live-indicator { | |
| color: var(--success); | |
| font-size: 0.75rem; | |
| font-weight: 700; | |
| letter-spacing: 0.1em; | |
| } | |
| .pulse-dot { | |
| width: 8px; | |
| height: 8px; | |
| background: var(--success); | |
| border-radius: 50%; | |
| animation: pulse 2s ease-in-out infinite; | |
| } | |
| @keyframes pulse { | |
| 0%, 100% { opacity: 1; transform: scale(1); } | |
| 50% { opacity: 0.5; transform: scale(1.2); } | |
| } | |
| /* Custom Buttons */ | |
| .sky-button { | |
| background: linear-gradient(135deg, var(--primary) 0%, var(--primary-dark) 100%); | |
| color: white; | |
| transition: all 0.3s ease; | |
| position: relative; | |
| overflow: hidden; | |
| } | |
| .sky-button::before { | |
| content: ''; | |
| position: absolute; | |
| top: 0; | |
| left: -100%; | |
| width: 100%; | |
| height: 100%; | |
| background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.2), transparent); | |
| transition: left 0.6s; | |
| } | |
| .sky-button:hover::before { | |
| left: 100%; | |
| } | |
| .sky-button:hover { | |
| transform: translateY(-2px); | |
| box-shadow: 0 10px 25px rgba(14, 165, 233, 0.4); | |
| } | |
| /* Status Badges */ | |
| .status-badge { | |
| display: inline-flex; | |
| align-items: center; | |
| gap: 0.5rem; | |
| padding: 0.25rem 0.75rem; | |
| border-radius: 9999px; | |
| font-size: 0.75rem; | |
| font-weight: 600; | |
| letter-spacing: 0.05em; | |
| text-transform: uppercase; | |
| } | |
| .status-connected { | |
| background: rgba(16, 185, 129, 0.15); | |
| color: var(--success); | |
| border: 1px solid rgba(16, 185, 129, 0.3); | |
| } | |
| .status-disconnected { | |
| background: rgba(239, 68, 68, 0.15); | |
| color: var(--danger); | |
| border: 1px solid rgba(239, 68, 68, 0.3); | |
| } | |
| .status-pending { | |
| background: rgba(245, 158, 11, 0.15); | |
| color: var(--warning); | |
| border: 1px solid rgba(245, 158, 11, 0.3); | |
| } | |
| /* Scrollbar Styling */ | |
| ::-webkit-scrollbar { | |
| width: 8px; | |
| height: 8px; | |
| } | |
| ::-webkit-scrollbar-track { | |
| background: rgba(15, 23, 42, 0.5); | |
| } | |
| ::-webkit-scrollbar-thumb { | |
| background: var(--primary); | |
| border-radius: 4px; | |
| } | |
| ::-webkit-scrollbar-thumb:hover { | |
| background: var(--primary-dark); | |
| } | |
| /* Trading Signal Animation */ | |
| .signal-item { | |
| animation: slideIn 0.5s cubic-bezier(0.4, 0, 0.2, 1); | |
| border-left: 4px solid transparent; | |
| transition: all 0.3s ease; | |
| } | |
| .signal-item.buy { | |
| border-left-color: var(--success); | |
| } | |
| .signal-item.sell { | |
| border-left-color: var(--danger); | |
| } | |
| @keyframes slideIn { | |
| from { | |
| opacity: 0; | |
| transform: translateX(-20px); | |
| } | |
| to { | |
| opacity: 1; | |
| transform: translateX(0); | |
| } | |
| } | |
| /* Exchange Status Card */ | |
| .exchange-status-item { | |
| transition: transform 0.3s ease, box-shadow 0.3s ease; | |
| } | |
| .exchange-status-item:hover { | |
| transform: translateX(5px); | |
| box-shadow: -4px 0 20px rgba(14, 165, 233, 0.2); | |
| } | |
| /* Table Row Hover */ | |
| tbody tr { | |
| transition: background-color 0.2s ease; | |
| } | |
| tbody tr:hover { | |
| background: rgba(30, 41, 59, 0.8); | |
| } | |
| /* Feather Icon Transitions */ | |
| .feather { | |
| transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); | |
| } | |
| /* Mobile Optimizations */ | |
| @media (max-width: 768px) { | |
| .glass-card { | |
| backdrop-filter: blur(8px); | |
| } | |
| .sky-button { | |
| padding: 0.75rem 1rem; | |
| } | |
| } | |
| /* Loading Skeleton */ | |
| .skeleton { | |
| background: linear-gradient(90deg, rgba(30, 41, 59, 0.4) 25%, rgba(51, 65, 85, 0.6) 50%, rgba(30, 41, 59, 0.4) 75%); | |
| background-size: 200% 100%; | |
| animation: loading 1.5s infinite; | |
| } | |
| @keyframes loading { | |
| 0% { background-position: 200% 0; } | |
| 100% { background-position: -200% 0; } | |
| } |