.login-container{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--bg-primary)}.login-box{background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:var(--radius-lg);padding:40px;width:360px;max-width:90vw;text-align:center}.login-title{font-size:32px;font-weight:700;background:linear-gradient(135deg,var(--accent-primary),#a371f7);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;margin-bottom:4px}.login-subtitle{font-size:14px;color:var(--text-secondary);margin-bottom:28px}.login-input{width:100%;padding:12px 16px;background:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:var(--radius-md);color:var(--text-primary);font-size:14px;outline:none;transition:border-color .2s;box-sizing:border-box}.login-input:focus{border-color:var(--accent-primary)}.login-input::placeholder{color:var(--text-muted)}.login-error{background:#da36331a;color:var(--accent-danger-light);padding:8px 12px;border-radius:var(--radius-sm);font-size:13px;margin-top:12px}.login-button{width:100%;padding:12px 16px;background:var(--accent-primary);color:#fff;border:none;border-radius:var(--radius-md);font-size:14px;font-weight:600;cursor:pointer;transition:background .2s;margin-top:16px}.login-button:hover:not(:disabled){background:var(--accent-secondary)}.login-button:disabled{opacity:.5;cursor:not-allowed}.app{min-height:100vh;display:flex;flex-direction:column}.header{display:flex;justify-content:space-between;align-items:center;padding:16px 24px;background:var(--bg-secondary);border-bottom:1px solid var(--border-color)}.header-left{display:flex;align-items:baseline;gap:8px}.logo{font-size:24px;font-weight:700;background:linear-gradient(135deg,var(--accent-primary),#a371f7);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.logo-sub{font-size:14px;color:var(--text-secondary);font-weight:500}.header-right{display:flex;align-items:center;gap:16px}.connection-indicator{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--text-secondary)}.connection-indicator .dot{width:8px;height:8px;border-radius:50%;background:var(--accent-danger)}.connection-indicator.connected .dot{background:var(--accent-success);animation:pulse 2s infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.status-badge{padding:6px 12px;border-radius:20px;font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.5px}.status-badge.running{background:#23863626;color:var(--accent-success);border:1px solid rgba(35,134,54,.3)}.status-badge.stopped{background:#da363326;color:var(--accent-danger);border:1px solid rgba(218,54,51,.3)}.ticker{display:flex;align-items:center;gap:24px;padding:12px 24px;background:var(--bg-elevated);border-bottom:1px solid var(--border-subtle);overflow-x:auto}.ticker-item{display:flex;flex-direction:column;min-width:fit-content}.ticker-label{font-size:11px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px;font-weight:600}.ticker-value{font-size:16px;font-weight:600;font-variant-numeric:tabular-nums;color:var(--text-primary)}.ticker-value.positive{color:var(--accent-success-light)}.ticker-value.negative{color:var(--accent-danger-light)}.ticker-value.highlight{color:var(--accent-primary)}.ticker-divider{width:1px;height:32px;background:var(--border-color)}.error-banner{display:flex;align-items:center;justify-content:space-between;padding:12px 24px;background:#da36331a;border-bottom:1px solid var(--accent-danger);color:var(--accent-danger-light);font-size:14px}.error-banner button{color:var(--accent-danger);font-size:13px;padding:4px 8px;border-radius:var(--radius-sm)}.error-banner button:hover{background:#da363333}.main{display:grid;grid-template-columns:340px 1fr;flex:1}@media (max-width: 1024px){.main{grid-template-columns:1fr}.sidebar{order:2}}.sidebar{background:var(--bg-secondary);border-right:1px solid var(--border-color);padding:20px;overflow-y:auto}.content{padding:20px;overflow-y:auto;min-width:0}.control-panel{display:flex;flex-direction:column;gap:20px}.panel-header{display:flex;align-items:center;gap:10px;color:var(--text-primary)}.panel-header h2{font-size:18px;font-weight:600}.panel-header svg{color:var(--text-secondary)}.position-card{background:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:var(--radius-lg);padding:16px;border-left:3px solid var(--text-muted)}.position-card.active{border-left-color:var(--accent-primary)}.position-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.position-title{display:flex;align-items:center;gap:8px;font-weight:600;font-size:14px}.position-title svg{color:var(--text-secondary)}.pnl-badge{font-size:13px;font-weight:600;padding:4px 8px;border-radius:var(--radius-sm)}.pnl-badge.positive{background:#23863626;color:var(--accent-success-light)}.pnl-badge.negative{background:#da363326;color:var(--accent-danger-light)}.position-details{display:flex;flex-direction:column;gap:8px}.position-row{display:flex;justify-content:space-between;font-size:13px;padding:6px 0;border-bottom:1px solid var(--border-subtle)}.position-row:last-child{border-bottom:none}.position-row .label{color:var(--text-secondary)}.position-row .value{color:var(--text-primary);font-weight:500;font-variant-numeric:tabular-nums}.position-row .value.time{font-size:12px}.config-section{display:flex;flex-direction:column;gap:12px}.section-title{font-size:13px;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px}.input-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.input-group{display:flex;flex-direction:column;gap:6px}.input-group.full{grid-column:1 / -1}.input-group label{font-size:13px;font-weight:500;color:var(--text-secondary)}.input-group .hint{font-size:11px;color:var(--text-muted)}.btn{display:flex;align-items:center;justify-content:center;gap:8px;padding:12px 16px;border-radius:var(--radius-md);font-weight:600;font-size:14px;transition:all .2s}.btn-apply{background:var(--accent-primary);color:#fff}.btn-apply:hover{background:var(--accent-secondary)}.btn-start{background:var(--accent-success);color:#fff;width:100%}.btn-start:hover{background:var(--accent-success-light)}.btn-stop{background:var(--accent-danger);color:#fff;width:100%}.btn-stop:hover{background:var(--accent-danger-light)}.btn-force-exit{background:var(--accent-warning);color:#fff;width:100%;margin-top:8px}.btn-force-exit:hover{background:#e5a628}.btn-pause{background:var(--accent-warning);color:#fff;width:100%}.btn-pause:hover{background:#e5a628}.engine-state{margin-bottom:12px}.state-indicators{display:flex;gap:8px;margin-bottom:8px}.state-badge{padding:4px 10px;border-radius:12px;font-size:11px;font-weight:600;text-transform:uppercase}.state-badge.active{background:#23863626;color:var(--accent-success);border:1px solid rgba(35,134,54,.3)}.state-badge.inactive{background:#da363326;color:var(--accent-danger);border:1px solid rgba(218,54,51,.3)}.disabled-reason{display:flex;align-items:center;gap:6px;padding:8px 12px;background:#da36331a;border:1px solid rgba(218,54,51,.2);border-radius:var(--radius-sm);font-size:12px;color:var(--accent-danger)}.control-buttons{display:flex;flex-direction:column;gap:8px}.config-info{background:var(--bg-tertiary);border-radius:var(--radius-md);padding:12px}.info-row{display:flex;justify-content:space-between;font-size:13px;padding:4px 0}.info-row span:first-child{color:var(--text-secondary)}.info-row span:last-child{color:var(--text-primary);font-weight:500}.dashboard{display:flex;flex-direction:column;gap:20px}.range-toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;min-width:0}.custom-range input{background:var(--bg-primary);border:1px solid var(--border-color);border-radius:var(--radius-sm);color:var(--text-primary);padding:8px 10px;font-size:13px}.history-sync-btn{margin-left:auto;display:inline-flex;align-items:center;gap:6px;touch-action:manipulation}.range-buttons{display:flex;gap:8px;flex-wrap:wrap;min-width:0}.range-btn{padding:8px 12px;border-radius:999px;border:1px solid var(--border-color);background:var(--bg-secondary);color:var(--text-secondary);font-size:12px;font-weight:700;letter-spacing:.04em;transition:background-color .2s,border-color .2s,color .2s;touch-action:manipulation}.range-btn:hover{color:var(--text-primary);border-color:var(--text-secondary)}.range-btn:focus-visible,.tab:focus-visible,.refresh-btn:focus-visible{outline:2px solid var(--accent-primary);outline-offset:2px}.range-btn.active{color:var(--accent-primary);border-color:var(--accent-primary);background:color-mix(in srgb,var(--accent-primary) 12%,transparent)}.custom-range{display:flex;gap:10px;flex-wrap:wrap}.spin{animation:spin 1s linear infinite}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.stats-row{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}@media (max-width: 768px){.stats-row{grid-template-columns:repeat(2,1fr)}.custom-range{flex-direction:column;align-items:stretch}.history-sync-btn{margin-left:0}}.stat-card{background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:var(--radius-lg);padding:16px;transition:transform .2s,box-shadow .2s}.stat-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-md)}.stat-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.stat-label{font-size:12px;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px;font-weight:600}.stat-icon{color:var(--text-muted)}.stat-value{font-size:24px;font-weight:700;font-variant-numeric:tabular-nums}.stat-value.positive{color:var(--accent-success-light)}.stat-value.negative{color:var(--accent-danger-light)}.stat-value.neutral{color:var(--text-primary)}.stat-sub{font-size:12px;color:var(--text-secondary);margin-top:4px}.premium-stats{display:flex;gap:24px;padding:12px 16px;background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:var(--radius-md)}.premium-stat{display:flex;flex-direction:column}.premium-stat-label{font-size:11px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px}.premium-stat-value{font-size:14px;font-weight:600;font-variant-numeric:tabular-nums}.tabs{display:flex;align-items:center;gap:4px;border-bottom:1px solid var(--border-color);padding-bottom:1px;min-width:0}.tab{display:flex;align-items:center;gap:6px;padding:10px 16px;font-size:14px;font-weight:500;color:var(--text-secondary);border-bottom:2px solid transparent;transition:color .2s,border-color .2s;margin-bottom:-1px;touch-action:manipulation}.tab:hover{color:var(--text-primary)}.tab.active{color:var(--accent-primary);border-bottom-color:var(--accent-primary)}.refresh-btn{margin-left:auto;padding:8px;color:var(--text-secondary);border-radius:var(--radius-sm);transition:background-color .2s,color .2s;touch-action:manipulation}.refresh-btn:hover{background:var(--bg-tertiary);color:var(--text-primary)}.chart-container{height:400px;background:var(--bg-primary);border:1px solid var(--border-color);border-radius:var(--radius-lg);position:relative;overflow:hidden}.chart-empty{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;color:var(--text-muted)}.trades-table-container{background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:var(--radius-lg);overflow-x:auto;-webkit-overflow-scrolling:touch;touch-action:pan-x pan-y pinch-zoom;overscroll-behavior-x:contain}.trades-table{width:100%;min-width:760px;border-collapse:collapse;font-size:13px}.trades-table th{text-align:left;padding:12px 16px;font-weight:600;color:var(--text-secondary);background:var(--bg-tertiary);border-bottom:1px solid var(--border-color);text-transform:uppercase;font-size:11px;letter-spacing:.5px;white-space:nowrap}.trades-table td{padding:12px 16px;border-bottom:1px solid var(--border-subtle);color:var(--text-primary);font-variant-numeric:tabular-nums;white-space:nowrap}.trades-table tr:last-child td{border-bottom:none}.trades-table tr:hover td{background:#ffffff05}.trades-table .time-cell{font-size:12px;color:var(--text-secondary)}.trades-table .empty-row{text-align:center;padding:32px;color:var(--text-muted)}.trades-table .positive{color:var(--accent-success-light)}.trades-table .negative{color:var(--accent-danger-light)}.trade-badge{display:inline-flex;padding:4px 10px;border-radius:12px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.5px}.trade-badge.enter,.trade-badge.pair_open{background:#16a34a2e;color:#86efac;border:1px solid rgba(34,197,94,.36)}.trade-badge.pair_close,.trade-badge.exit{background:#e11d482e;color:#fda4af;border:1px solid rgba(244,63,94,.34)}.trade-badge.leg_add_upbit{background:#0891b22e;color:#67e8f9;border:1px solid rgba(34,211,238,.34)}.trade-badge.leg_add_kinvest{background:#2563eb2e;color:#93c5fd;border:1px solid rgba(96,165,250,.34)}.trade-badge.leg_reduce_upbit{background:#ea580c2e;color:#fdba74;border:1px solid rgba(249,115,22,.34)}.trade-badge.leg_reduce_kinvest{background:#ca8a042e;color:#fde68a;border:1px solid rgba(250,204,21,.34)}.trade-badge.reconcile{background:#47556938;color:#cbd5e1;border:1px solid rgba(148,163,184,.3)}.trade-badge.roll_over{background:#7c3aed2e;color:#c4b5fd;border:1px solid rgba(167,139,250,.34)}.trade-badge.adjustment{background:#78350f33;color:#fcd34d;border:1px solid rgba(217,119,6,.32)}.header-btn{display:flex;align-items:center;gap:6px;padding:6px 14px;border-radius:20px;font-size:12px;font-weight:600;cursor:pointer;border:1px solid transparent;transition:all .2s ease}.header-btn-telegram{background:#2aabee1f;color:#2aabee;border-color:#2aabee40}.header-btn-telegram:hover{background:#2aabee38;border-color:#2aabee73;box-shadow:0 0 12px #2aabee26}.header-btn-logout{background:#8b949e1a;color:var(--text-secondary);border-color:#8b949e33}.header-btn-logout:hover{background:#da363326;color:var(--accent-danger-light);border-color:#da36334d}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:1000;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.modal-content{background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:var(--radius-lg);width:420px;max-width:90vw;max-height:80vh;overflow-y:auto;padding:20px}.modal-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.modal-header h3{font-size:16px;font-weight:600;color:var(--text-primary)}.modal-close{background:none;border:none;color:var(--text-secondary);cursor:pointer;padding:4px;border-radius:var(--radius-sm);display:flex;align-items:center}.modal-close:hover{background:var(--bg-tertiary);color:var(--text-primary)}.telegram-list{display:flex;flex-direction:column;gap:8px;margin-bottom:16px}.telegram-empty{text-align:center;color:var(--text-secondary);padding:16px;font-size:13px}.telegram-item{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;background:var(--bg-tertiary);border-radius:var(--radius-md);border:1px solid var(--border-color)}.telegram-item.disabled{opacity:.5}.telegram-item-info{flex:1;min-width:0}.telegram-item-label{font-size:13px;font-weight:600;color:var(--text-primary);margin-bottom:2px}.telegram-item-details{display:flex;gap:8px;font-size:11px;color:var(--text-secondary)}.telegram-token,.telegram-chat{font-family:var(--font-mono)}.telegram-item-actions{display:flex;gap:4px;margin-left:8px}.btn-icon{background:none;border:none;color:var(--text-secondary);cursor:pointer;padding:4px;border-radius:var(--radius-sm);display:flex;align-items:center}.btn-icon:hover{background:var(--bg-primary);color:var(--text-primary)}.btn-icon-danger:hover{color:var(--accent-danger-light)}.toggle-on{color:var(--accent-success-light)}.toggle-off{color:var(--text-secondary)}.telegram-add{border-top:1px solid var(--border-color);padding-top:16px}.telegram-add h4{font-size:13px;font-weight:600;color:var(--text-primary);margin-bottom:12px}.telegram-error{background:#da36331a;color:var(--accent-danger-light);padding:8px 12px;border-radius:var(--radius-sm);font-size:12px;margin-bottom:12px}.btn-add{background:var(--accent-primary);color:#fff;width:100%;margin-top:8px}.btn-add:hover{background:var(--accent-secondary)}.btn-add:disabled{opacity:.5;cursor:not-allowed}@media (max-width: 768px){.header{flex-wrap:wrap;gap:12px;padding:14px 16px}.header-right{width:100%;flex-wrap:wrap;justify-content:flex-start;gap:10px}.ticker{padding:10px 16px;gap:16px}.error-banner{flex-direction:column;align-items:flex-start;gap:8px;padding:12px 16px}.sidebar,.content{padding:16px}.input-grid{grid-template-columns:1fr}.state-indicators{flex-wrap:wrap}.range-toolbar{align-items:stretch}.range-buttons{flex-wrap:nowrap;overflow-x:auto;padding-bottom:2px;scrollbar-width:none;-webkit-overflow-scrolling:touch}.range-buttons::-webkit-scrollbar{display:none}.range-btn{flex:0 0 auto;white-space:nowrap}.history-sync-btn{width:100%;justify-content:center}.tabs{overflow-x:auto;overflow-y:hidden;padding-bottom:4px;scrollbar-width:none;-webkit-overflow-scrolling:touch}.tabs::-webkit-scrollbar{display:none}.tab{flex:0 0 auto;white-space:nowrap}.refresh-btn{flex:0 0 auto;margin-left:0}.chart-container{height:320px}.trades-table{min-width:660px;font-size:12px}.trades-table th,.trades-table td{padding:10px 12px}.trades-table .time-cell{font-size:11px}.trade-badge{padding:3px 8px;font-size:10px;letter-spacing:.35px}}@media (max-width: 560px){.logo{font-size:20px}.logo-sub{font-size:12px}.header-btn{padding:6px 10px}.header-btn span{display:none}.position-header,.position-row,.info-row{gap:10px}.position-row,.info-row{align-items:flex-start}.position-row .value.time{text-align:right}.stats-row{grid-template-columns:1fr}.stat-card{padding:14px}.stat-value{font-size:22px}.custom-range input{width:100%;min-width:0}.chart-container{height:280px}.trades-table-container{border-radius:14px}.trades-table{min-width:560px;font-size:11px}.trades-table th,.trades-table td{padding:8px 9px}.trades-table th{font-size:10px;letter-spacing:.3px}.trades-table .time-cell{font-size:10px;line-height:1.25}.trade-badge{padding:2px 6px;border-radius:10px;font-size:9px;letter-spacing:.25px}}:root{--bg-primary: #0d1117;--bg-secondary: #161b22;--bg-tertiary: #21262d;--bg-elevated: #1c2128;--border-color: #30363d;--border-subtle: #21262d;--text-primary: #f0f6fc;--text-secondary: #8b949e;--text-muted: #6e7681;--accent-primary: #58a6ff;--accent-secondary: #1f6feb;--accent-success: #238636;--accent-success-light: #2ea043;--accent-danger: #da3633;--accent-danger-light: #f85149;--accent-warning: #d29922;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .3);--shadow-md: 0 4px 12px rgba(0, 0, 0, .4);--shadow-lg: 0 8px 24px rgba(0, 0, 0, .5);--radius-sm: 6px;--radius-md: 8px;--radius-lg: 12px}*{box-sizing:border-box;margin:0;padding:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Inter,Roboto,Oxygen,Ubuntu,sans-serif;background:var(--bg-primary);color:var(--text-primary);line-height:1.5;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#root{min-height:100vh}button{cursor:pointer;font-family:inherit;border:none;background:none}input{font-family:inherit;background:var(--bg-tertiary);border:1px solid var(--border-color);color:var(--text-primary);border-radius:var(--radius-sm);padding:10px 12px;font-size:14px;width:100%;transition:border-color .2s,box-shadow .2s}input:focus{outline:none;border-color:var(--accent-primary);box-shadow:0 0 0 3px #58a6ff26}input[type=number]{-moz-appearance:textfield}input[type=number]::-webkit-outer-spin-button,input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--bg-secondary)}::-webkit-scrollbar-thumb{background:var(--bg-tertiary);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--border-color)}
