:root{font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light dark;color:#ffffffde;background-color:#242424;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{font-weight:500;color:#646cff;text-decoration:inherit}a:hover{color:#535bf2}body{margin:0;display:flex;place-items:center;min-width:320px;min-height:100vh}h1{font-size:3.2em;line-height:1.1}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:#1a1a1a;cursor:pointer;transition:border-color .25s}button:hover{border-color:#646cff}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}@media(prefers-color-scheme:light){:root{color:#213547;background-color:#fff}a:hover{color:#747bff}button{background-color:#f9f9f9}}.login-container{display:flex;justify-content:center;align-items:center;min-height:100vh;padding:2rem;background:linear-gradient(135deg,#0f172a,#1e293b)}.login-box{background:#1e293b;border:1px solid #334155;border-radius:1rem;padding:3rem;max-width:400px;width:100%;box-shadow:0 20px 25px -5px #0000004d}.login-box h1{font-size:2rem;font-weight:700;margin-bottom:.5rem;color:#e2e8f0;text-align:center}.login-box .subtitle{color:#94a3b8;margin-bottom:2rem;text-align:center;font-size:.875rem}.login-box form{display:flex;flex-direction:column;gap:1rem}.login-box .form-group{display:flex;flex-direction:column}.login-box .input{padding:1rem;font-size:1rem}.login-box .btn{width:100%;padding:1rem;font-size:1rem;margin-top:.5rem}.sessions-modal{background:#1e293b;border:1px solid #334155;border-radius:1rem;max-width:1200px;width:95%;max-height:90vh;display:flex;flex-direction:column}.sessions-content{flex:1;display:grid;grid-template-columns:1fr 1.5fr;gap:1rem;overflow:hidden;padding:1.5rem}.sessions-list,.session-logs{display:flex;flex-direction:column;overflow:hidden}.sessions-list h3,.session-logs h3{margin:0 0 1rem;color:#e2e8f0;font-size:1.125rem}.sessions-table{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:.75rem}.session-row{background:#0f172a;border:1px solid #334155;border-radius:.5rem;padding:1rem;cursor:pointer;transition:all .2s;display:flex;justify-content:space-between;align-items:center}.session-row:hover{border-color:#475569;background:#1e293b}.session-row.selected{border-color:#3b82f6;background:#1e293b}.session-info{flex:1}.session-date{color:#e2e8f0;font-weight:600;margin-bottom:.5rem}.session-stats{display:flex;gap:1rem;flex-wrap:wrap}.stat-item{color:#94a3b8;font-size:.875rem}.stat-item.positive{color:#10b981}.stat-item.negative{color:#ef4444}.empty-sessions,.empty-logs{text-align:center;padding:3rem;color:#64748b}.session-logs .logs-content{flex:1;overflow-y:auto;background:#0f172a;border-radius:.5rem;padding:1rem}.session-logs .logs-text{margin:0;font-family:Monaco,Menlo,Consolas,monospace;font-size:.813rem;line-height:1.5;color:#e2e8f0;white-space:pre-wrap;word-wrap:break-word}@media(max-width:968px){.sessions-content{grid-template-columns:1fr}.session-logs{max-height:400px}}.trades-modal{background:#1e293b;border:1px solid #334155;border-radius:1rem;max-width:1400px;width:95%;max-height:90vh;display:flex;flex-direction:column}.trades-content{flex:1;display:grid;grid-template-columns:1fr 2fr;gap:1rem;overflow:hidden;padding:1.5rem}.trades-panel{display:flex;flex-direction:column;overflow:hidden}.trades-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.trades-header h3{margin:0;color:#e2e8f0;font-size:1.125rem}.view-mode-toggle{display:flex;gap:.5rem}.view-mode-toggle .btn{padding:.375rem .75rem;font-size:.875rem}.trades-summary{background:#0f172a;border-radius:.5rem;padding:1rem;margin-bottom:1rem;display:flex;gap:1.5rem;flex-wrap:wrap}.summary-item{display:flex;flex-direction:column;gap:.25rem}.summary-item span{color:#94a3b8;font-size:.813rem}.summary-item strong{color:#e2e8f0;font-size:1rem}.summary-item strong.positive{color:#10b981}.summary-item strong.negative{color:#ef4444}.trades-content-area{flex:1;overflow:hidden;display:flex;flex-direction:column}.table-wrapper{flex:1;overflow-y:auto;background:#0f172a;border-radius:.5rem}.trades-table{width:100%;border-collapse:collapse;color:#e2e8f0;font-size:.875rem}.trades-table thead{position:sticky;top:0;background:#1e293b;z-index:10}.trades-table th{padding:.75rem;text-align:left;font-weight:600;border-bottom:2px solid #334155;color:#94a3b8;white-space:nowrap}.trades-table td{padding:.75rem;border-bottom:1px solid #334155}.trades-table tbody tr{transition:background .2s}.trades-table tbody tr:hover{background:#1e293b}.trade-row.trade-buy{border-left:3px solid #10b981}.trade-row.trade-sell{border-left:3px solid #ef4444}.grouped-trades{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:1rem}.pair-group{background:#0f172a;border:1px solid #334155;border-radius:.5rem;padding:1rem}.pair-group.pair-complete{border-left:4px solid #10b981}.pair-group.pair-partial{border-left:4px solid #f59e0b}.pair-group.pair-incomplete{border-left:4px solid #64748b}.pair-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem;padding-bottom:.75rem;border-bottom:1px solid #334155}.pair-id{color:#94a3b8;font-size:.875rem;font-family:monospace}.pair-pnl{font-weight:600;font-size:1rem}.pair-pnl.positive{color:#10b981}.pair-pnl.negative{color:#ef4444}.pair-trades{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.pair-trade{background:#1e293b;border-radius:.375rem;padding:.75rem}.pair-trade h4{margin:0 0 .75rem;font-size:.875rem;font-weight:600;text-transform:uppercase}.buy-trade h4{color:#10b981}.sell-trade h4{color:#ef4444}.trade-details{display:flex;flex-direction:column;gap:.5rem}.trade-detail-row{display:flex;justify-content:space-between;gap:1rem;font-size:.813rem}.trade-detail-row span:first-child{color:#94a3b8}.trade-detail-row span:last-child{color:#e2e8f0;font-family:monospace}.empty-trade{color:#64748b;font-style:italic;text-align:center;padding:1rem}.empty-trades{text-align:center;padding:3rem;color:#64748b}.badge{display:inline-block;padding:.25rem .5rem;border-radius:.25rem;font-size:.75rem;font-weight:600;text-transform:uppercase}.badge-success{background:#10b9811a;color:#10b981}.badge-danger{background:#ef44441a;color:#ef4444}.badge-info{background:#3b82f61a;color:#3b82f6}.badge-warning{background:#f59e0b1a;color:#f59e0b}.badge-purple{background:#a855f71a;color:#a855f7}.badge-secondary{background:#64748b1a;color:#64748b}.positive{color:#10b981}.negative{color:#ef4444}@media(max-width:1200px){.trades-content{grid-template-columns:1fr}.trades-panel{max-height:600px}.pair-trades{grid-template-columns:1fr}}@media(max-width:768px){.trades-summary{gap:1rem}.summary-item{flex:1 1 calc(50% - .5rem);min-width:120px}.trades-table{font-size:.75rem}.trades-table th,.trades-table td{padding:.5rem}.view-mode-toggle{flex-direction:column}}.bot-card{background:#1e293b;border:1px solid #334155;border-radius:1rem;padding:1.5rem;transition:all .2s}.bot-card:hover{border-color:#475569;box-shadow:0 10px 15px -3px #0000004d}.bot-card.running{border-color:#10b981}.bot-card.stopped{border-color:#ef4444}.bot-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem}.bot-header h3{font-size:1.5rem;font-weight:600;color:#e2e8f0;margin:0}.bot-info{display:flex;flex-direction:column;gap:.75rem;margin-bottom:1.5rem}.info-row{display:flex;justify-content:space-between;align-items:center}.info-row .label{color:#94a3b8;font-size:.875rem}.info-row .value{color:#e2e8f0;font-weight:600;font-size:.875rem}.bot-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(100px,1fr));gap:1rem;padding:1rem;background:#0f172a;border-radius:.5rem;margin-bottom:1.5rem}.stat{text-align:center}.stat-label{color:#94a3b8;font-size:.75rem;text-transform:uppercase;margin-bottom:.25rem}.stat-value{color:#e2e8f0;font-size:1.125rem;font-weight:700}.bot-actions{display:flex;gap:.75rem}.bot-actions .btn{flex:1}.logs-modal{background:#1e293b;border:1px solid #334155;border-radius:1rem;max-width:900px;width:90%;max-height:80vh;display:flex;flex-direction:column}.logs-modal .modal-header{display:flex;justify-content:space-between;align-items:center;padding:1.5rem;border-bottom:1px solid #334155}.logs-modal .modal-header h3{margin:0;color:#e2e8f0;font-size:1.25rem}.logs-content{flex:1;overflow-y:auto;padding:1.5rem;background:#0f172a}.logs-text{margin:0;padding:0;font-family:Monaco,Menlo,Consolas,monospace;font-size:.875rem;line-height:1.5;color:#e2e8f0;white-space:pre-wrap;word-wrap:break-word}.empty-logs{text-align:center;padding:3rem;color:#64748b}.logs-modal .modal-footer{padding:1rem 1.5rem;border-top:1px solid #334155;display:flex;justify-content:flex-end}.modal-overlay{position:fixed;inset:0;background:#000000bf;display:flex;justify-content:center;align-items:center;z-index:1000;padding:1rem}.modal{background:#1e293b;border:1px solid #334155;border-radius:1rem;max-width:800px;width:100%;max-height:90vh;overflow-y:auto;box-shadow:0 20px 25px -5px #00000080}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:1.5rem;border-bottom:1px solid #334155}.modal-header h2{font-size:1.5rem;font-weight:600;color:#e2e8f0;margin:0}.close-btn{background:none;border:none;color:#94a3b8;font-size:2rem;cursor:pointer;padding:0;width:2rem;height:2rem;display:flex;align-items:center;justify-content:center;transition:color .2s}.close-btn:hover{color:#e2e8f0}.modal form{padding:1.5rem}.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:1.5rem;margin-bottom:1.5rem}.form-group{display:flex;flex-direction:column;gap:.5rem}.form-group.full-width{grid-column:1 / -1}.form-group label{color:#e2e8f0;font-weight:600;font-size:.875rem}.form-group small{color:#94a3b8;font-size:.75rem}.modal-footer{display:flex;justify-content:flex-end;gap:1rem;padding:1.5rem;border-top:1px solid #334155}@media(max-width:768px){.modal{max-width:100%;margin:1rem}.form-grid{grid-template-columns:1fr}.modal-footer{flex-direction:column}.modal-footer .btn{width:100%}}.dashboard{min-height:100vh;padding:2rem}.dashboard-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:3rem;flex-wrap:wrap;gap:1rem}.dashboard-header h1{font-size:2.5rem;font-weight:700;color:#e2e8f0;margin-bottom:.5rem}.dashboard-header .subtitle{color:#94a3b8;font-size:1rem}.header-actions{display:flex;gap:1rem;align-items:center}.bots-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(350px,1fr));gap:1.5rem}.empty-state{grid-column:1 / -1;text-align:center;padding:4rem 2rem;background:#1e293b;border:2px dashed #334155;border-radius:1rem;color:#94a3b8}.empty-state p{font-size:1.125rem;margin:0}@media(max-width:768px){.dashboard{padding:1rem}.dashboard-header{flex-direction:column;align-items:flex-start}.dashboard-header h1{font-size:2rem}.bots-grid{grid-template-columns:1fr}}*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:#0f172a;color:#e2e8f0;min-height:100vh}.loading{display:flex;justify-content:center;align-items:center;min-height:100vh;font-size:1.5rem;color:#64748b}.btn{padding:.75rem 1.5rem;border:none;border-radius:.5rem;font-size:1rem;font-weight:600;cursor:pointer;transition:all .2s;text-decoration:none;display:inline-block}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:#3b82f6;color:#fff}.btn-primary:hover:not(:disabled){background:#2563eb}.btn-secondary{background:#475569;color:#fff}.btn-secondary:hover:not(:disabled){background:#334155}.btn-success{background:#10b981;color:#fff}.btn-success:hover:not(:disabled){background:#059669}.btn-danger{background:#ef4444;color:#fff}.btn-danger:hover:not(:disabled){background:#dc2626}.btn-sm{padding:.5rem 1rem;font-size:.875rem}.input{width:100%;padding:.75rem;border:1px solid #334155;border-radius:.5rem;background:#1e293b;color:#e2e8f0;font-size:1rem;transition:border-color .2s}.input:focus{outline:none;border-color:#3b82f6}.input:disabled{opacity:.5;cursor:not-allowed}.badge{padding:.25rem .75rem;border-radius:9999px;font-size:.75rem;font-weight:600;text-transform:uppercase}.badge-success{background:#10b98133;color:#10b981}.badge-danger{background:#ef444433;color:#ef4444}.error-message{padding:.75rem;background:#ef444433;border:1px solid #ef4444;border-radius:.5rem;color:#fca5a5;margin-top:1rem}.error-banner{padding:1rem;background:#ef444433;border:1px solid #ef4444;border-radius:.5rem;color:#fca5a5;margin-bottom:1.5rem}
