:root{--bg-primary: #131722;--bg-secondary: #1e222d;--bg-tertiary: #2a2e39;--bg-input: #1e222d;--bg-hover: #363a45;--border-primary: #2a2e39;--border-hover: #434651;--border-focus: #2962ff;--text-primary: #d1d4dc;--text-secondary: #787b86;--text-muted: #4c525e;--text-bright: #ffffff;--accent-blue: #2962ff;--accent-blue-hover: #1e53e5;--accent-blue-bg: rgba(41, 98, 255, .12);--color-profit: #26a69a;--color-profit-bg: rgba(38, 166, 154, .12);--color-loss: #ef5350;--color-loss-bg: rgba(239, 83, 80, .12);--color-warning: #ff9800;--color-warning-bg: rgba(255, 152, 0, .12);--color-neutral: #787b86;--font-family: -apple-system, BlinkMacSystemFont, "Trebuchet MS", Roboto, Ubuntu, sans-serif;--font-mono: "SF Mono", "Fira Code", "Cascadia Code", "Courier New", monospace;--font-size-xs: .6875rem;--font-size-sm: .75rem;--font-size-base: .8125rem;--font-size-md: .875rem;--font-size-lg: 1rem;--font-size-xl: 1.25rem;--font-size-2xl: 1.5rem;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--space-xs: 4px;--space-sm: 8px;--space-md: 12px;--space-lg: 16px;--space-xl: 24px;--space-2xl: 32px;--spacing-xs: var(--space-xs);--spacing-sm: var(--space-sm);--spacing-md: var(--space-md);--spacing-lg: var(--space-lg);--spacing-xl: var(--space-xl);--spacing-2xl: var(--space-2xl);--radius-sm: 4px;--radius-md: 6px;--radius-lg: 8px;--sidebar-width: 240px;--shadow-sm: 0 1px 3px rgba(0, 0, 0, .2);--shadow-md: 0 4px 12px rgba(0, 0, 0, .3);--shadow-lg: 0 8px 24px rgba(0, 0, 0, .4);--transition-fast: .15s ease;--transition-normal: .25s ease;--z-sidebar: 100;--z-toast: 500;--z-modal: 1000}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}html,body{height:100%}a{color:inherit;text-decoration:none}button{cursor:pointer;border:none;background:none;font:inherit;color:inherit}input,select,textarea{font:inherit;color:inherit}ul,ol{list-style:none}img,svg{display:block;max-width:100%}table{border-collapse:collapse}body{font-family:var(--font-family);font-size:var(--font-size-base);color:var(--text-primary);background:var(--bg-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow:hidden}#app{height:100vh}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border-primary);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--border-hover)}::selection{background:var(--accent-blue-bg);color:var(--text-bright)}:focus-visible{outline:2px solid var(--accent-blue);outline-offset:1px}.app-shell{display:flex;height:100vh;overflow:hidden}.app-sidebar{width:var(--sidebar-width);flex-shrink:0;background:var(--bg-secondary);border-right:1px solid var(--border-primary);display:flex;flex-direction:column;overflow-y:auto;z-index:var(--z-sidebar)}.app-content{flex:1;overflow-y:auto;padding:var(--space-lg);min-width:0;display:flex;flex-direction:column}.app-page{flex:1;min-height:0}.app-footer{margin-top:var(--space-lg);padding-top:var(--space-md);border-top:1px solid var(--border-primary);font-size:var(--font-size-sm);color:var(--text-muted);text-align:center}.app-footer a{color:var(--accent-blue);text-decoration:none}.app-footer a:hover{text-decoration:underline}.page-grid-2col{display:grid;grid-template-columns:280px 1fr;gap:var(--space-lg);height:100%}.page-grid-3col{display:grid;grid-template-columns:280px 1fr 280px;gap:var(--space-lg);height:100%}.page-grid-options{display:grid;grid-template-columns:380px 1fr 300px;gap:var(--space-xl);height:100%}.page-grid-2col>*,.page-grid-3col>*,.page-grid-options>*{overflow-y:auto;min-height:0}@media(max-width:1200px){.page-grid-3col{grid-template-columns:250px 1fr 250px}.page-grid-options{grid-template-columns:340px 1fr 280px}}@media(max-width:1000px){.page-grid-3col,.page-grid-options{grid-template-columns:1fr}}@media(max-width:900px){.page-grid-2col{grid-template-columns:1fr}}.sidebar{display:flex;flex-direction:column;height:100%}.sidebar-brand{padding:var(--space-xl) var(--space-lg);border-bottom:1px solid var(--border-primary);display:flex;flex-direction:column;align-items:center;text-align:center}.sidebar-brand h1{position:relative;isolation:isolate;font-size:var(--font-size-lg);font-weight:var(--font-weight-bold);color:var(--text-bright);letter-spacing:-.4px;line-height:1.05;margin:0;padding:6px 8px}.sidebar-brand h1:before{content:"";position:absolute;inset:50% auto auto 50%;width:112px;height:112px;transform:translate(-50%,-50%);background:url(/brand-mark.svg) center / contain no-repeat;opacity:.09;filter:saturate(.8);pointer-events:none;z-index:-1}.sidebar-brand .brand-line{display:block}.sidebar-brand .brand-line-main{font-size:var(--font-size-xl);font-weight:var(--font-weight-bold);line-height:1.05}.sidebar-brand .brand-line-subtext{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--text-secondary);letter-spacing:.5px;text-transform:lowercase;margin:4px 0 3px}.sidebar-brand .brand-sub{font-size:var(--font-size-xs);color:var(--text-secondary);margin-top:var(--space-sm);text-transform:uppercase;letter-spacing:1.2px;opacity:.85}.sidebar-nav{flex:1;padding:var(--space-sm) 0}.sidebar-nav-item{display:flex;align-items:center;gap:var(--space-md);padding:var(--space-md) var(--space-lg);margin:2px var(--space-sm);border-radius:var(--radius-md);color:var(--text-secondary);cursor:pointer;transition:all var(--transition-fast);font-size:var(--font-size-md);font-weight:var(--font-weight-medium);border:none;background:none;width:calc(100% - var(--space-lg));text-align:left}.sidebar-nav-item:hover{background:var(--bg-tertiary);color:var(--text-primary)}.sidebar-nav-item.active{background:var(--accent-blue-bg);color:var(--accent-blue)}.sidebar-nav-item .nav-icon{width:20px;height:20px;flex-shrink:0;opacity:.7}.sidebar-nav-item.active .nav-icon{opacity:1}.sidebar-footer{padding:var(--space-lg);border-top:1px solid var(--border-primary)}.sidebar-footer .api-section{margin-bottom:var(--space-md)}.sidebar-footer .api-label{font-size:var(--font-size-xs);color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px;margin-bottom:var(--space-xs)}.sidebar-footer .api-key-input{width:100%;padding:var(--space-sm) var(--space-md);background:var(--bg-primary);border:1px solid var(--border-primary);border-radius:var(--radius-sm);color:var(--text-primary);font-size:var(--font-size-sm)}.sidebar-footer .api-key-input:focus{outline:none;border-color:var(--accent-blue)}.sidebar-footer .mode-row{display:flex;align-items:center;justify-content:space-between;margin-top:var(--space-md)}.sidebar-footer .mode-label{font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);padding:2px var(--space-sm);border-radius:var(--radius-sm);text-transform:uppercase;letter-spacing:.5px}.sidebar-footer .mode-label.production{background:var(--color-profit-bg);color:var(--color-profit)}.sidebar-footer .mode-label.sandbox{background:var(--color-warning-bg);color:var(--color-warning)}.sidebar-external-link{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm) 0;margin-top:var(--space-sm);font-size:var(--font-size-xs);color:var(--text-muted);transition:color var(--transition-fast)}.sidebar-external-link:hover{color:var(--text-secondary)}.panel{background:var(--bg-secondary);border:1px solid var(--border-primary);border-radius:var(--radius-lg);padding:var(--space-lg);contain:layout style paint}.panel-title{font-size:var(--font-size-md);font-weight:var(--font-weight-semibold);color:var(--text-primary);margin-bottom:var(--space-lg);display:flex;align-items:center;gap:var(--space-sm)}.panel-title .icon-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.panel-title .icon-dot.blue{background:var(--accent-blue)}.panel-title .icon-dot.green{background:var(--color-profit)}.panel-title .icon-dot.red{background:var(--color-loss)}.panel-title .icon-dot.yellow{background:var(--color-warning)}.panel+.panel{margin-top:var(--space-lg)}.panel-section{padding:var(--space-md) 0;border-top:1px solid var(--border-primary)}.panel-section:first-child{padding-top:0;border-top:none}.input-group{margin-bottom:var(--space-lg)}.input-group label{display:block;font-size:var(--font-size-xs);color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px;margin-bottom:var(--space-xs)}input[type=text],input[type=number],input[type=password],select{width:100%;padding:var(--space-sm) var(--space-md);background:var(--bg-input);border:1px solid var(--border-primary);border-radius:var(--radius-md);color:var(--text-primary);font-size:var(--font-size-base);transition:border-color var(--transition-fast)}input:focus,select:focus{outline:none;border-color:var(--accent-blue);box-shadow:0 0 0 2px #2962ff26}input::placeholder{color:var(--text-muted)}select{cursor:pointer;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath d='M3 5l3 3 3-3' stroke='%23787b86' fill='none' stroke-width='1.5'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;padding-right:30px}.input-row{display:flex;gap:var(--space-sm);align-items:center}.input-row input,.input-row select{flex:1;min-width:0}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-lg);border-radius:var(--radius-md);font-size:var(--font-size-base);font-weight:var(--font-weight-medium);cursor:pointer;border:none;transition:all var(--transition-fast);white-space:nowrap}.btn:active{transform:translateY(1px)}.btn-primary{background:var(--accent-blue);color:var(--text-bright)}.btn-primary:hover{background:var(--accent-blue-hover)}.btn-success{background:var(--color-profit);color:var(--text-bright)}.btn-success:hover{background:#1e9e8f}.btn-danger{background:var(--color-loss);color:var(--text-bright)}.btn-danger:hover{background:#d84848}.btn-secondary{background:var(--bg-tertiary);color:var(--text-primary);border:1px solid var(--border-primary)}.btn-secondary:hover{background:var(--bg-hover);border-color:var(--border-hover)}.btn-sm{padding:var(--space-xs) var(--space-md);font-size:var(--font-size-sm)}.btn-block{width:100%}.btn:disabled{opacity:.5;cursor:not-allowed;transform:none}.toggle-row{display:flex;align-items:center;justify-content:space-between;gap:var(--space-sm)}.toggle-label{font-size:var(--font-size-sm);color:var(--text-secondary)}.toggle-switch{position:relative;width:40px;height:22px;flex-shrink:0}.toggle-switch input{opacity:0;width:0;height:0;position:absolute}.toggle-slider{position:absolute;cursor:pointer;inset:0;background:var(--bg-tertiary);border-radius:22px;transition:background var(--transition-fast)}.toggle-slider:before{content:"";position:absolute;height:16px;width:16px;left:3px;bottom:3px;background:var(--text-primary);border-radius:50%;transition:transform var(--transition-fast)}.toggle-switch input:checked+.toggle-slider{background:var(--accent-blue)}.toggle-switch input:checked+.toggle-slider:before{transform:translate(18px)}.btn-group{display:flex;gap:1px;background:var(--border-primary);border-radius:var(--radius-md);overflow:hidden}.btn-group .btn-group-item{flex:1;padding:var(--space-xs) var(--space-sm);background:var(--bg-tertiary);color:var(--text-secondary);font-size:var(--font-size-xs);font-weight:var(--font-weight-medium);cursor:pointer;border:none;transition:all var(--transition-fast);text-align:center}.btn-group .btn-group-item:hover{color:var(--text-primary);background:var(--bg-hover)}.btn-group .btn-group-item.active{background:var(--accent-blue);color:var(--text-bright)}.status-bar{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm) 0;font-size:var(--font-size-xs);color:var(--text-secondary)}.status-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.status-dot.ready{background:var(--color-profit)}.status-dot.loading{background:var(--color-warning);animation:pulse 1.5s infinite}.status-dot.error{background:var(--color-loss)}.status-dot.connected{background:var(--color-profit);animation:pulse 2s infinite}.status-dot.scanning{background:var(--accent-blue);animation:pulse 1s infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.4}}.status-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.toast-container{position:fixed;top:var(--space-lg);right:var(--space-lg);z-index:var(--z-toast);display:flex;flex-direction:column;gap:var(--space-sm);pointer-events:none}.toast{background:var(--bg-tertiary);border:1px solid var(--border-primary);border-radius:var(--radius-md);padding:var(--space-md) var(--space-lg);color:var(--text-primary);font-size:var(--font-size-sm);box-shadow:var(--shadow-md);pointer-events:auto;animation:toast-in .2s ease forwards;max-width:360px}.toast.removing{animation:toast-out .2s ease forwards}.toast.toast-success{border-left:3px solid var(--color-profit)}.toast.toast-error{border-left:3px solid var(--color-loss)}.toast.toast-warning{border-left:3px solid var(--color-warning)}.toast.toast-info{border-left:3px solid var(--accent-blue)}@keyframes toast-in{0%{opacity:0;transform:translate(20px)}to{opacity:1;transform:translate(0)}}@keyframes toast-out{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:translate(20px)}}.modal-overlay{position:fixed;inset:0;background:#000000b3;z-index:var(--z-modal);display:flex;align-items:center;justify-content:center;animation:modal-fade-in .2s ease}.modal-overlay.closing{animation:modal-fade-out .2s ease forwards}.modal-content{background:var(--bg-secondary);border:1px solid var(--border-primary);border-radius:var(--radius-lg);padding:var(--space-xl);max-width:500px;width:90%;max-height:80vh;overflow-y:auto;box-shadow:var(--shadow-lg)}.modal-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-lg)}.modal-title{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);color:var(--text-bright)}.modal-close{width:28px;height:28px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-sm);color:var(--text-secondary);font-size:var(--font-size-lg);cursor:pointer;border:none;background:none;transition:all var(--transition-fast)}.modal-close:hover{background:var(--bg-tertiary);color:var(--text-primary)}.modal-body{color:var(--text-primary)}.modal-footer{margin-top:var(--space-xl);display:flex;gap:var(--space-sm);justify-content:flex-end}@keyframes modal-fade-in{0%{opacity:0}to{opacity:1}}@keyframes modal-fade-out{0%{opacity:1}to{opacity:0}}
