*{box-sizing:border-box;margin:0;padding:0}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:#f5f5f5;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}.app-container{margin:0 auto;max-width:1400px;padding:15px}.app-header{background:linear-gradient(135deg,#667eea,#764ba2);border-radius:8px;box-shadow:0 2px 4px #0000001a;color:#fff;margin-bottom:15px;padding:15px 20px}.app-header h1{font-size:1.5rem;margin-bottom:10px}.header-controls{align-items:center;display:flex;flex-wrap:wrap;gap:12px;justify-content:flex-end}.header-controls label{align-items:center;display:flex;gap:8px}.header-controls select{border:none;border-radius:5px;font-size:14px;padding:8px 12px}.header-controls button{background:#fff;border:none;border-radius:5px;color:#667eea;cursor:pointer;font-weight:700;padding:8px 16px;transition:transform .2s}.header-controls button:hover{transform:scale(1.05)}.header-controls button.clear-history-btn{background:#0000;border:1px solid #ffffffb3;color:#fffffff2}.header-controls button.clear-history-btn:hover:not(:disabled){background:#ffffff26}.header-controls button.clear-history-btn:disabled{cursor:not-allowed;opacity:.6;transform:none}.user-info{background:#ffffff1a;border-radius:4px;color:#ffffffe6;font-size:.85rem;padding:4px 8px}.logout-btn{background:#ef444433;border:1px solid #ef444480;border-radius:5px;color:#fffffff2;cursor:pointer;font-weight:700;padding:8px 16px;transition:all .2s}.logout-btn:hover{background:#ef44444d;transform:scale(1.05)}.app-main{display:flex;flex-direction:column;gap:12px}@media (max-width:1200px){.app-main{grid-template-columns:1fr}}.section{background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a;padding:12px}.section h2{color:#333;font-size:1rem;margin-bottom:10px}.section.full-width{grid-column:1/-1}.comparison-layout{grid-gap:15px;align-items:start;display:grid;gap:15px;grid-template-columns:1fr 320px}.comparison-left{min-width:0}.opportunities-sidebar{display:flex;flex-direction:column;gap:10px}@media (max-width:1200px){.comparison-layout{grid-template-columns:1fr}}.opportunity-panel{display:flex;flex-direction:column}.error,.loading{font-size:1.2rem;padding:40px;text-align:center}.error{color:#e74c3c}.error button{background:#667eea;border:none;border-radius:5px;color:#fff;cursor:pointer;margin-top:15px;padding:10px 20px}.quote-comparison{display:flex;flex-direction:column;gap:12px}.comparison-table-container{max-height:150px;overflow-x:auto;overflow-y:auto}.comparison-table{width:100%}.comparison-table table{border-collapse:collapse;width:100%}.comparison-table td,.comparison-table th{border-bottom:1px solid #e0e0e0;font-size:.8rem;padding:6px 8px;text-align:left}.comparison-table td:not(:last-child),.comparison-table th:not(:last-child){white-space:nowrap}.comparison-table td.spread-vs-usd{min-width:100px;white-space:normal}.comparison-table th{color:#333;font-weight:700}.comparison-table th,.comparison-table tr:hover{background-color:#f8f9fa}.buy-price{color:#22c55e;font-weight:500}.sell-price{color:#ef4444;font-weight:500}.spread{color:#6366f1;font-weight:500}.spread-percent{color:#8b5cf6;font-weight:500}.spread-vs-usd{display:flex;flex-direction:column;font-size:.75rem;gap:2px}.spread-vs-usd .positive{color:#22c55e;font-weight:600}.spread-vs-usd .negative{color:#ef4444;font-weight:600}.spread-vs-usd-percent{font-size:.7rem;opacity:.8}.spread-vs-usd .no-reference{color:#94a3b8;font-style:italic}.comparison-chart{margin-top:8px}.chart-header{align-items:center;display:flex;flex-wrap:wrap;gap:10px;justify-content:space-between;margin-bottom:8px}.comparison-chart h3{color:#333;font-size:.9rem;margin:0}.chart-time-filter{align-items:center;display:flex;gap:8px}.chart-time-filter label{color:#666;font-size:.85rem;font-weight:500}.time-range-select{background:#fff;border:1px solid #ddd;border-radius:4px;color:#333;cursor:pointer;font-size:.8rem;padding:4px 8px;transition:border-color .2s}.time-range-select:hover{border-color:#667eea}.time-range-select:focus{border-color:#667eea;box-shadow:0 0 0 2px #667eea1a;outline:none}.chart-loading,.chart-no-data{color:#666;font-size:.85rem;font-style:italic;padding:20px;text-align:center}.no-data{color:#666;padding:40px}.arbitrage-opportunities{display:flex;flex:1 1;flex-direction:column;min-height:0;width:100%}.opportunities-grid{display:flex;flex-direction:column;gap:0}.opportunity-card{background:linear-gradient(135deg,#667eea,#764ba2);border-radius:6px;box-shadow:0 2px 4px #0000001a;color:#fff;overflow:visible;padding:10px;position:relative;transition:transform .2s;z-index:1}.opportunity-card:hover{box-shadow:0 6px 12px #00000026;transform:translateY(-2px)}.opportunity-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:8px}.opportunity-badge{background:#fff3}.opportunity-badge,.profit-badge{border-radius:15px;font-size:.75rem;font-weight:700;padding:3px 8px}.profit-badge{color:#fff}.opportunity-body{display:flex;flex-direction:column;gap:8px}.trade-flow{align-items:center;display:flex;gap:15px;justify-content:space-between}.trade-step{background:#ffffff1a;border-radius:4px;flex:1 1;padding:6px;text-align:center}.buy-step{border-left:3px solid #22c55e}.sell-step{border-left:3px solid #ef4444}.step-label{font-size:.7rem;opacity:.9}.step-exchange,.step-label{font-weight:700;margin-bottom:4px}.step-exchange,.step-price{font-size:.85rem}.arrow,.step-price{font-weight:700}.arrow{font-size:1.5rem}.profit-info{border-top:1px solid #fff3;display:flex;justify-content:center;padding-top:6px}.profit-item{align-items:center;display:flex;flex-direction:column;gap:3px}.profit-item span{font-size:.75rem;opacity:.9}.profit-item strong{font-size:.95rem}.opportunity-timestamp{align-items:center;border-top:1px solid #fff3;display:flex;flex-direction:column;gap:2px;margin-top:6px;padding-top:6px}.timestamp-label{font-size:.7rem;opacity:.9}.timestamp-value{font-size:.75rem;font-weight:600}.no-opportunities{color:#666;padding:40px;text-align:center}.no-opportunities .hint{font-size:.9rem;font-style:italic;margin-top:10px}@media (max-width:768px){.opportunities-grid{grid-template-columns:1fr}.trade-flow{flex-direction:column}.arrow{transform:rotate(90deg)}}.arbitrage-history{background:#fff;display:flex;flex-direction:column;position:relative;width:100%;z-index:2}.history-loading,.no-history{color:#666;font-size:.8rem;font-style:italic;padding:15px;text-align:center}.history-table-container{background:#fff;overflow-x:auto}.history-table{border-collapse:collapse;font-size:.7rem;width:100%}.history-table th{background-color:#f8f9fa;background:#fff;border-bottom:2px solid #e0e0e0;color:#333;font-size:.7rem;font-weight:700;padding:6px 4px;position:-webkit-sticky;position:sticky;text-align:left;top:0;z-index:10}.history-table td{background:#fff;border-bottom:1px solid #e0e0e0;padding:6px 4px}.history-table tr:hover{background-color:#f8f9fa}.history-timestamp{color:#666;font-size:.7rem;white-space:nowrap}.history-exchange{color:#333;font-size:.75rem;font-weight:600;margin-bottom:2px}.history-price{font-size:.75rem}.history-price.buy{color:#22c55e}.history-price.sell{color:#ef4444}.history-profit{color:#6366f1;font-weight:600}.history-profit-percent{font-weight:600}.history-profit-percent.high{color:#22c55e}.history-profit-percent.medium{color:#f59e0b}.opportunities-tabs{display:flex;flex-direction:column}.tabs-header{border-bottom:2px solid #e0e0e0;display:flex;gap:4px;margin-bottom:10px}.tab-button{align-items:center;background:#0000;border:none;border-bottom:2px solid #0000;color:#666;cursor:pointer;display:flex;flex:1 1;font-size:.8rem;font-weight:500;gap:6px;justify-content:center;margin-bottom:-2px;padding:8px 12px;position:relative;transition:all .2s}.tab-button:hover{background:#00000005;color:#333}.tab-button.active{border-bottom-color:#667eea;color:#667eea;font-weight:600}.tab-badge{border-radius:10px;color:#fff;font-size:.7rem;font-weight:600;min-width:18px;padding:2px 6px;text-align:center}.tab-badge,.tab-button.active .tab-badge{background:#667eea}.tabs-content{display:flex;flex-direction:column;overflow-x:hidden}.exchange-list{width:100%}.exchanges-grid{grid-gap:8px;display:grid;gap:8px;grid-template-columns:repeat(auto-fill,minmax(180px,1fr))}.exchange-card{background:#fff;border:1px solid #e0e0e0;border-radius:6px;padding:8px;transition:all .2s}.exchange-card.active{border-color:#22c55e;box-shadow:0 2px 8px #22c55e33}.exchange-card.inactive{border-color:#e0e0e0;opacity:.7}.exchange-card:hover{box-shadow:0 4px 12px #0000001a;transform:translateY(-2px)}.exchange-header{align-items:center;border-bottom:1px solid #e0e0e0;display:flex;justify-content:space-between;margin-bottom:6px;padding-bottom:6px}.exchange-header h3{color:#333;font-size:.85rem;margin:0}.status-badge{border-radius:12px;font-size:.7rem;font-weight:700;padding:2px 6px}.status-badge.online{background-color:#22c55e1a;color:#22c55e}.status-badge.offline{background-color:#0000000d;color:#999}.exchange-details{display:flex;flex-direction:column;gap:4px}.detail-row{align-items:center;display:flex;font-size:.75rem;justify-content:space-between;padding:2px 0}.detail-row span:first-child{color:#666;font-size:.75rem}.detail-row strong{font-size:.85rem}.detail-row .buy{color:#22c55e}.detail-row .sell{color:#ef4444}.detail-row .spread{color:#6366f1}.detail-row .spread-vs-usd{align-items:flex-end;display:flex;flex-direction:column;gap:1px;text-align:right}.detail-row .spread-vs-usd strong{font-size:.8rem;font-weight:600}.detail-row .spread-vs-usd.positive strong{color:#22c55e}.detail-row .spread-vs-usd.negative strong{color:#ef4444}.detail-row .spread-vs-usd .spread-vs-usd-percent{color:inherit;font-size:.65rem;font-weight:400;opacity:.8}.timestamp{color:#999;font-size:.7rem}.no-data{color:#999;font-size:.75rem;font-style:italic;padding:10px 0;text-align:center}.usd-reference-compact{align-items:center;background:#ffffff26;border-left:2px solid #ffffff4d;border-radius:4px;display:flex;font-size:.7rem;gap:8px;padding:4px 10px 4px 12px;white-space:nowrap}.usd-label-compact{color:#fffffff2;font-size:.7rem;font-weight:600}.usd-price-compact{background:#ffffff1a;border-radius:3px;font-size:.7rem;padding:2px 6px}.usd-price-compact.buy{color:#a7f3d0}.usd-price-compact.sell{color:#fecaca}.usd-price-compact.spread{color:#bfdbfe}.usd-timestamp-compact{color:#ffffffb3;font-size:.65rem;margin-left:4px}.usd-no-data{color:#ffffffb3;font-size:.7rem;font-style:italic}@media (max-width:1200px){.usd-reference-compact{font-size:.65rem;gap:6px;padding:3px 8px}.usd-price-compact{font-size:.65rem;padding:2px 4px}.usd-timestamp-compact{display:none}}@media (max-width:768px){.usd-reference-compact{flex-wrap:wrap;font-size:.6rem}.usd-price-compact{font-size:.6rem}}.spread-matrix{overflow-x:auto;width:100%}.spread-matrix-header{margin-bottom:10px}.spread-matrix-legend{align-items:center;color:#666;display:flex;flex-wrap:wrap;font-size:.8rem;gap:12px;margin:0}.legend-item{align-items:center;display:inline-flex;gap:6px}.legend-item:before{border-radius:3px;content:"";height:14px;width:14px}.legend-item.green:before{background:#22c55e}.legend-item.yellow:before{background:#eab308}.legend-item.red:before{background:#ef4444}.legend-hint{color:#94a3b8;font-style:italic;margin-left:auto}.spread-matrix-empty{color:#64748b;font-style:italic;margin:0;padding:24px;text-align:center}.spread-matrix-table-wrap{border:1px solid #e2e8f0;border-radius:8px;overflow-x:auto}.spread-matrix-table{border-collapse:collapse;font-size:.8rem;min-width:280px;width:100%}.spread-matrix-table td,.spread-matrix-table th{border:1px solid #e2e8f0;padding:8px 10px;text-align:center}.spread-matrix-table .corner{background:#f8fafc;min-width:70px}.spread-matrix-table .col-header,.spread-matrix-table .row-header{background:#f1f5f9;color:#334155;font-weight:600;white-space:nowrap}.spread-matrix-table .row-header{padding-left:12px;text-align:left}.spread-matrix-table .cell{font-weight:600;min-width:64px}.spread-matrix-table .cell-green{background:#22c55e26;color:#15803d}.spread-matrix-table .cell-yellow{background:#eab30833;color:#a16207}.spread-matrix-table .cell-red{background:#ef44441f;color:#b91c1c}.spread-matrix-table .cell-nodata{background:#f8fafc;color:#94a3b8}.spread-matrix-table tbody tr:hover .cell:not(.cell-nodata){filter:brightness(.97)}.spread-history-chart{background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a;padding:12px;width:100%}.spread-history-header{margin-bottom:15px}.spread-history-header h3{color:#333;font-size:.95rem;margin:0 0 8px}.spread-history-subtitle{color:#666;font-size:.8rem;font-style:italic;margin:0}.spread-history-empty,.spread-history-loading,.spread-history-no-data{color:#666;font-size:.85rem;font-style:italic;padding:40px;text-align:center}@media (max-width:768px){.exchange-select-group,.spread-history-controls{align-items:stretch;flex-direction:column}.exchange-select{width:100%}}.login-container{align-items:center;background:linear-gradient(135deg,#667eea,#764ba2);display:flex;justify-content:center;min-height:100vh;padding:20px}.login-box{background:#fff;border-radius:12px;box-shadow:0 10px 40px #0003;max-width:400px;padding:40px;width:100%}.login-box h1{color:#667eea;font-size:1.8rem;margin:0 0 10px;text-align:center}.login-box h2{color:#333;font-size:1.3rem;font-weight:600;margin:0 0 30px;text-align:center}.form-group{margin-bottom:20px}.form-group label{color:#555;display:block;font-size:.9rem;font-weight:500;margin-bottom:8px}.form-group input{border:2px solid #e0e0e0;border-radius:6px;box-sizing:border-box;font-size:1rem;padding:12px;transition:border-color .2s;width:100%}.form-group input:focus{border-color:#667eea;outline:none}.form-group input:disabled{background:#f5f5f5;cursor:not-allowed}.login-error{background:#fee;border:1px solid #fcc;border-radius:6px;color:#c33;font-size:.9rem;margin-bottom:20px;padding:12px}.login-button{background:linear-gradient(135deg,#667eea,#764ba2);border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:1rem;font-weight:600;padding:12px;transition:transform .2s,opacity .2s;width:100%}.login-button:hover:not(:disabled){box-shadow:0 4px 12px #667eea66;transform:translateY(-2px)}.login-button:disabled{cursor:not-allowed;opacity:.6;transform:none}
/*# sourceMappingURL=main.95f7c747.css.map*/