:root{--bg-primary:#0a0e17;--bg-secondary:#111827;--bg-tertiary:#1a2332;--bg-card:#131c2b;--bg-card-hover:#1a2740;--bg-input:#0f1825;--bg-input-focus:#162033;--text-primary:#e8edf5;--text-secondary:#8892a8;--text-muted:#5a6478;--accent-green:#00c853;--accent-green-bg:#00c85315;--accent-red:#ff5252;--accent-red-bg:#ff525215;--accent-blue:#448aff;--accent-blue-bg:#448aff15;--accent-cyan:#00bcd4;--accent-cyan-bg:#00bcd415;--accent-yellow:#ffd740;--accent-yellow-bg:#ffd74015;--accent-purple:#7c4dff;--accent-purple-bg:#7c4dff15;--border-color:#1e2d45;--border-light:#243348;--shadow-sm:0 1px 3px #0000004d;--shadow-md:0 4px 12px #0006;--shadow-lg:0 8px 24px #00000080;--shadow-glow:0 0 20px #00c8531a;--radius-sm:6px;--radius-md:10px;--radius-lg:16px;--radius-xl:20px;--sidebar-width:240px;--header-height:60px;--font-mono:"SF Mono","Fira Code","Cascadia Code",monospace;--font-sans:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:14px}body{font-family:var(--font-sans);background:var(--bg-primary);color:var(--text-primary);min-height:100vh;line-height:1.6;overflow-x:hidden}a{color:var(--accent-blue);text-decoration:none}a:hover{color:var(--accent-cyan)}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border-color);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}.loading-screen{min-height:100vh;color:var(--text-secondary);flex-direction:column;justify-content:center;align-items:center;gap:16px;display:flex}.loading-spinner{border:3px solid var(--border-color);border-top-color:var(--accent-green);border-radius:50%;width:40px;height:40px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.app-layout{min-height:100vh;display:flex}.sidebar{width:var(--sidebar-width);background:var(--bg-secondary);border-right:1px solid var(--border-color);z-index:100;flex-direction:column;transition:transform .3s;display:flex;position:fixed;top:0;bottom:0;left:0}.sidebar-header{border-bottom:1px solid var(--border-color);padding:20px 20px 16px}.sidebar-brand{color:var(--text-primary);align-items:center;gap:8px;font-size:18px;font-weight:700;display:flex}.sidebar-brand .brand-icon{font-size:22px}.sidebar-brand .brand-sub{color:var(--text-muted);margin-top:-2px;font-size:11px;font-weight:400;display:block}.sidebar-nav{flex:1;padding:12px 8px;overflow-y:auto}.nav-section-title{text-transform:uppercase;letter-spacing:1px;color:var(--text-muted);padding:12px 12px 6px;font-size:10px;font-weight:600}.nav-item{border-radius:var(--radius-sm);color:var(--text-secondary);cursor:pointer;text-align:left;background:0 0;border:none;align-items:center;gap:10px;width:100%;padding:10px 12px;font-size:13px;font-weight:500;transition:all .15s;display:flex}.nav-item:hover{background:var(--bg-tertiary);color:var(--text-primary)}.nav-item.active{background:var(--accent-blue-bg);color:var(--accent-blue);font-weight:600}.nav-item .nav-icon{text-align:center;width:20px;font-size:16px}.nav-item .nav-badge{background:var(--accent-red-bg);color:var(--accent-red);border-radius:10px;margin-left:auto;padding:1px 7px;font-size:10px;font-weight:600}.sidebar-footer{border-top:1px solid var(--border-color);padding:12px 8px}.main-content{margin-left:var(--sidebar-width);flex:1;min-height:100vh}.top-header{height:var(--header-height);background:var(--bg-secondary);border-bottom:1px solid var(--border-color);z-index:50;justify-content:space-between;align-items:center;padding:0 24px;display:flex;position:sticky;top:0}.header-left{align-items:center;gap:12px;display:flex}.header-right{align-items:center;gap:16px;display:flex}.mobile-menu-btn{color:var(--text-primary);cursor:pointer;background:0 0;border:none;padding:4px;font-size:20px;display:none}.user-info{color:var(--text-secondary);align-items:center;gap:8px;font-size:13px;display:flex}.user-menu{position:relative}.user-menu-trigger{color:var(--text-secondary);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:999px;align-items:center;gap:8px;padding:6px 8px;font-size:13px;list-style:none;transition:all .15s;display:flex}.user-menu-trigger::-webkit-details-marker{display:none}.user-menu-trigger:hover,.user-menu[open] .user-menu-trigger{color:var(--text-primary);background:var(--bg-tertiary);border-color:var(--border-color)}.user-menu-caret{color:var(--text-muted);font-size:11px}.user-dropdown-menu{border:1px solid var(--border-color);border-radius:var(--radius-md);background:var(--bg-card);min-width:176px;box-shadow:var(--shadow-lg);z-index:80;padding:8px;position:absolute;top:calc(100% + 8px);right:0}.user-menu:not([open]) .user-dropdown-menu{display:none}.user-menu[open] .user-dropdown-menu{display:block}.user-dropdown-item{border-radius:var(--radius-sm);width:100%;color:var(--text-secondary);text-align:left;cursor:pointer;background:0 0;border:0;align-items:center;gap:8px;padding:9px 10px;font-size:13px;display:flex}.user-dropdown-item:hover{color:var(--text-primary);background:var(--bg-tertiary)}.user-dropdown-item.danger{color:var(--accent-red)}.user-dropdown-item.danger:hover{background:var(--accent-red-bg)}.user-avatar{background:var(--accent-blue-bg);width:30px;height:30px;color:var(--accent-blue);border-radius:50%;justify-content:center;align-items:center;font-size:13px;font-weight:600;display:flex}.connection-badge{background:var(--accent-green-bg);color:var(--accent-green);border-radius:12px;align-items:center;gap:5px;padding:4px 10px;font-size:11px;display:flex}.connection-badge.disconnected{background:var(--accent-red-bg);color:var(--accent-red)}.connection-dot{background:currentColor;border-radius:50%;width:6px;height:6px;animation:2s infinite pulse-dot}@keyframes pulse-dot{0%,to{opacity:1}50%{opacity:.4}}.page-container{max-width:1400px;margin:0 auto;padding:20px 24px}.page-header{margin-bottom:24px}.page-title{color:var(--text-primary);margin-bottom:4px;font-size:22px;font-weight:700}.page-subtitle{color:var(--text-secondary);font-size:13px}.card{background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-md);padding:20px;transition:all .2s}.card:hover{border-color:var(--border-light);box-shadow:var(--shadow-sm)}.card-header{justify-content:space-between;align-items:center;margin-bottom:16px;display:flex}.card-title{color:var(--text-primary);font-size:14px;font-weight:600}.card-value{font-size:28px;font-weight:700;font-family:var(--font-mono);line-height:1.2}.card-label{color:var(--text-muted);margin-top:4px;font-size:11px}.stats-grid{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px;margin-bottom:24px;display:grid}.stat-card{background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-md);padding:20px}.stat-card .stat-icon{margin-bottom:8px;font-size:24px}.stat-card .stat-value{font-size:24px;font-weight:700;font-family:var(--font-mono)}.stat-card .stat-label{color:var(--text-muted);margin-top:4px;font-size:12px}.stat-card .stat-change{margin-top:4px;font-size:11px;font-weight:500}.stat-card .stat-change.up{color:var(--accent-green)}.stat-card .stat-change.down{color:var(--accent-red)}.grid-2{grid-template-columns:1fr 1fr;gap:16px;display:grid}.grid-3{grid-template-columns:1fr 1fr 1fr;gap:16px;display:grid}.grid-4{grid-template-columns:repeat(4,1fr);gap:16px;display:grid}@media (width<=1024px){.grid-3,.grid-4{grid-template-columns:1fr 1fr}}@media (width<=768px){.grid-2,.grid-3,.grid-4{grid-template-columns:1fr}.portfolio-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}.table-container{overflow-x:auto}table{border-collapse:collapse;width:100%}thead th{text-align:left;text-transform:uppercase;letter-spacing:.5px;color:var(--text-muted);border-bottom:1px solid var(--border-color);white-space:nowrap;padding:10px 12px;font-size:11px;font-weight:600}tbody td{border-bottom:1px solid var(--border-light);color:var(--text-primary);padding:10px 12px;font-size:13px}tbody tr:hover{background:var(--bg-card-hover)}tbody tr:last-child td{border-bottom:none}.btn{border-radius:var(--radius-sm);cursor:pointer;font-size:13px;font-weight:500;font-family:var(--font-sans);border:none;align-items:center;gap:6px;padding:8px 16px;transition:all .15s;display:inline-flex}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--accent-blue);color:#fff}.btn-primary:hover:not(:disabled){background:#2979ff}.btn-success{background:var(--accent-green);color:#000}.btn-success:hover:not(:disabled){background:#00e676}.btn-danger{background:var(--accent-red);color:#fff}.btn-danger:hover:not(:disabled){background:#ff1744}.btn-ghost{color:var(--text-secondary);border:1px solid var(--border-color);background:0 0}.btn-ghost:hover:not(:disabled){background:var(--bg-tertiary);color:var(--text-primary)}.btn-sm{padding:5px 10px;font-size:12px}.btn-lg{padding:10px 24px;font-size:15px}.form-group{margin-bottom:16px}.form-label{color:var(--text-secondary);margin-bottom:6px;font-size:12px;font-weight:600;display:block}.form-input,.form-select,.form-textarea{background:var(--bg-input);border:1px solid var(--border-color);border-radius:var(--radius-sm);width:100%;color:var(--text-primary);font-size:13px;font-family:var(--font-sans);padding:9px 12px;transition:all .15s}.form-input:focus,.form-select:focus,.form-textarea:focus{border-color:var(--accent-blue);background:var(--bg-input-focus);outline:none}.form-textarea{resize:vertical;min-height:80px}.form-input.error{border-color:var(--accent-red)}.template-field-locked,.template-field-locked:disabled,.template-field-locked[readonly]{cursor:not-allowed;color:var(--text-secondary);opacity:.82;background:#ffffff09;border-style:dashed}.form-help{color:var(--text-muted);margin-top:4px;font-size:11px}.tag{border-radius:4px;align-items:center;gap:4px;padding:2px 8px;font-size:11px;font-weight:600;display:inline-flex}.tag-buy{background:var(--accent-green-bg);color:var(--accent-green)}.tag-sell{background:var(--accent-red-bg);color:var(--accent-red)}.tag-watch{background:var(--accent-cyan-bg);color:var(--accent-cyan)}.tag-hold{background:var(--accent-yellow-bg);color:var(--accent-yellow)}.tag-low{background:var(--accent-green-bg);color:var(--accent-green)}.tag-mid{background:var(--accent-yellow-bg);color:var(--accent-yellow)}.tag-high{background:var(--accent-red-bg);color:var(--accent-red)}.badge{border:1px solid var(--border-color);background:var(--bg-tertiary);color:var(--text-secondary);white-space:nowrap;border-radius:999px;justify-content:center;align-items:center;gap:4px;padding:3px 9px;font-size:11px;font-weight:700;line-height:1.2;display:inline-flex}.badge.success{background:var(--accent-green-bg);color:var(--accent-green);border-color:var(--accent-green)}.badge.danger{background:var(--accent-red-bg);color:var(--accent-red);border-color:var(--accent-red)}.badge.warning{background:var(--accent-yellow-bg);color:var(--accent-yellow);border-color:var(--accent-yellow)}.badge.info{background:var(--accent-blue-bg);color:var(--accent-blue);border-color:var(--accent-blue)}.badge.muted{background:var(--bg-tertiary);color:var(--text-muted);border-color:var(--border-color)}.risk-badge{border:1px solid;border-radius:10px;align-items:center;gap:4px;padding:2px 10px;font-size:11px;font-weight:500;display:inline-flex}.risk-badge.low{border-color:var(--accent-green);color:var(--accent-green)}.risk-badge.mid{border-color:var(--accent-yellow);color:var(--accent-yellow)}.risk-badge.high{border-color:var(--accent-red);color:var(--accent-red)}.signal-card{background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-md);cursor:pointer;padding:14px 16px;transition:all .2s}.signal-card:hover{border-color:var(--accent-blue);box-shadow:0 0 12px #448aff14}.signal-card-header{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.signal-code{font-size:14px;font-weight:700;font-family:var(--font-mono)}.signal-name{color:var(--text-secondary);margin-left:6px;font-size:12px}.signal-price{font-size:13px;font-weight:600;font-family:var(--font-mono)}.signal-change{font-size:12px;font-weight:500}.signal-change.positive{color:var(--accent-red)}.signal-change.negative{color:var(--accent-green)}.signal-change.flat{color:var(--text-muted)}.signal-body{flex-wrap:wrap;gap:6px;margin-top:8px;display:flex}.signal-body .reason{color:var(--text-secondary);flex:100%;margin-top:4px;font-size:12px}.signal-footer{color:var(--text-muted);justify-content:space-between;align-items:center;margin-top:8px;font-size:11px;display:flex}.signal-confidence{align-items:center;gap:6px;display:flex}.confidence-bar{background:var(--bg-tertiary);border-radius:2px;width:60px;height:4px;overflow:hidden}.confidence-fill{border-radius:2px;height:100%;transition:width .3s}.slider-container{align-items:center;gap:12px;display:flex}.slider-container input[type=range]{appearance:none;background:var(--bg-tertiary);border-radius:2px;outline:none;flex:1;height:4px}.slider-container input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;background:var(--accent-blue);cursor:pointer;border:2px solid var(--bg-card);border-radius:50%;width:16px;height:16px;box-shadow:0 0 6px #448aff66}.slider-value{font-size:13px;font-weight:600;font-family:var(--font-mono);color:var(--accent-blue);text-align:right;min-width:30px}.progress-bar{background:var(--bg-tertiary);border-radius:3px;width:100%;height:6px;overflow:hidden}.progress-fill{background:var(--accent-blue);border-radius:3px;height:100%;transition:width .5s}.progress-fill.success{background:var(--accent-green)}.progress-fill.warning{background:var(--accent-yellow)}.progress-fill.danger{background:var(--accent-red)}.progress-label{color:var(--text-muted);justify-content:space-between;margin-top:4px;font-size:11px;display:flex}.login-page{background:var(--bg-primary);background-image:radial-gradient(at 20%,#448aff0d 0%,#0000 50%),radial-gradient(at 80%,#00c8530d 0%,#0000 50%);justify-content:center;align-items:center;min-height:100vh;padding:20px;display:flex}.login-card{background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-lg);width:100%;max-width:400px;box-shadow:var(--shadow-lg);padding:40px}.login-brand{text-align:center;margin-bottom:32px}.login-brand h1{color:var(--text-primary);font-size:24px;font-weight:700}.login-brand p{color:var(--text-secondary);margin-top:4px;font-size:13px}.login-error{background:var(--accent-red-bg);color:var(--accent-red);border-radius:var(--radius-sm);text-align:center;margin-bottom:16px;padding:8px 12px;font-size:12px}.ping-indicator{align-items:center;gap:4px;display:inline-flex}.chart-container{background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-md);width:100%;height:350px;padding:4px}.chart-container.small{height:200px}.chart-container.large{height:450px}.code-editor{border:1px solid var(--border-color);border-radius:var(--radius-sm);font-family:var(--font-mono);color:var(--text-primary);white-space:pre-wrap;tab-size:2;background:#0d1117;min-height:120px;padding:12px;font-size:13px;line-height:1.5}.toast-container{z-index:1000;flex-direction:column;gap:8px;display:flex;position:fixed;top:16px;right:16px}.toast{border-radius:var(--radius-sm);box-shadow:var(--shadow-md);min-width:250px;max-width:400px;padding:10px 16px;font-size:13px;animation:.3s slideIn}.toast.success{background:var(--accent-green-bg);border:1px solid var(--accent-green);color:var(--accent-green)}.toast.error{background:var(--accent-red-bg);border:1px solid var(--accent-red);color:var(--accent-red)}.toast.info{background:var(--accent-blue-bg);border:1px solid var(--accent-blue);color:var(--accent-blue)}.toast.warning{background:var(--accent-yellow-bg);border:1px solid var(--accent-yellow);color:var(--accent-yellow)}@keyframes slideIn{0%{opacity:0;transform:translate(100%)}to{opacity:1;transform:translate(0)}}.empty-state{color:var(--text-muted);text-align:center;flex-direction:column;justify-content:center;align-items:center;padding:40px 20px;display:flex}.empty-state .empty-icon{margin-bottom:12px;font-size:48px}.empty-state h3{color:var(--text-secondary);margin-bottom:4px;font-size:16px}.empty-state p{font-size:13px}.modal-overlay{z-index:200;background:#0009;justify-content:center;align-items:center;padding:20px;animation:.2s fadeIn;display:flex;position:fixed;inset:0}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.modal{background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:var(--radius-lg);width:100%;max-width:560px;max-height:80vh;box-shadow:var(--shadow-lg);padding:24px;overflow-y:auto}.modal-header{justify-content:space-between;align-items:center;margin-bottom:20px;display:flex}.modal-title{font-size:16px;font-weight:600}.modal-close{color:var(--text-secondary);cursor:pointer;background:0 0;border:none;padding:4px;font-size:20px}.modal-close:hover{color:var(--text-primary)}.tabs{border-bottom:1px solid var(--border-color);gap:0;margin-bottom:20px;display:flex}.tab{color:var(--text-secondary);cursor:pointer;font-size:13px;font-weight:500;font-family:var(--font-sans);background:0 0;border:none;border-bottom:2px solid #0000;padding:10px 16px;transition:all .15s}.tab:hover{color:var(--text-primary)}.tab.active{color:var(--accent-blue);border-bottom-color:var(--accent-blue)}.toggle{cursor:pointer;width:40px;height:22px;position:relative}.toggle input{opacity:0;width:0;height:0}.toggle-slider{background:var(--bg-tertiary);border-radius:11px;transition:all .2s;position:absolute;inset:0}.toggle-slider:before{content:"";background:var(--text-secondary);border-radius:50%;width:18px;height:18px;transition:all .2s;position:absolute;bottom:2px;left:2px}.toggle input:checked+.toggle-slider{background:var(--accent-green-bg)}.toggle input:checked+.toggle-slider:before{background:var(--accent-green);transform:translate(18px)}.heatmap-grid{grid-template-columns:repeat(12,1fr);gap:3px;margin-top:8px;display:grid}.heatmap-cell{aspect-ratio:1;cursor:pointer;border-radius:3px;justify-content:center;align-items:center;font-size:9px;font-weight:600;transition:transform .15s;display:flex}.heatmap-cell:hover{z-index:1;transform:scale(1.2)}.mobile-bottom-nav{display:none}@media (width<=768px){:root{--sidebar-width:0px}.sidebar{transform:translate(-100%)}.sidebar.open{transform:translate(0)}.mobile-menu-btn{display:block}.main-content{margin-left:0}.top-header{padding:0 12px}.page-container{padding:12px}.stats-grid{grid-template-columns:repeat(2,1fr);gap:8px}.stat-card{padding:14px}.stat-card .stat-value{font-size:20px}.card{padding:14px}.login-card{padding:24px}.signal-card{padding:12px}.modal{margin:10px;padding:16px}.chart-container{height:250px}.chart-container.large{height:300px}.grid-2{grid-template-columns:1fr}}.sidebar-overlay{z-index:99;background:#00000080;display:none;position:fixed;inset:0}@media (width<=768px){.sidebar-overlay.visible{display:block}}.condition-row{border-bottom:1px solid var(--border-light);align-items:center;gap:8px;padding:8px 0;display:flex}.condition-row:last-child{border-bottom:none}.condition-operator{color:var(--accent-cyan);text-transform:uppercase;background:var(--accent-cyan-bg);border-radius:4px;padding:2px 8px;font-size:11px;font-weight:600}.kpi-grid{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px;margin-bottom:20px;display:grid}.kpi-card{background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-sm);text-align:center;padding:14px}.kpi-card .kpi-value{font-size:20px;font-weight:700;font-family:var(--font-mono)}.kpi-card .kpi-label{color:var(--text-muted);margin-top:2px;font-size:11px}.kpi-card .kpi-change{margin-top:2px;font-size:12px;font-weight:500}@keyframes fadeInUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.animate-in{animation:.3s fadeInUp}@media (width<=600px){.app-layout{padding-bottom:56px}.mobile-bottom-nav{background:var(--bg-secondary);border-top:1px solid var(--border-color);z-index:150;-webkit-backdrop-filter:blur(12px);align-items:stretch;height:56px;padding:0;display:flex;position:fixed;bottom:0;left:0;right:0}.mobile-bottom-nav .bnav-item{color:var(--text-muted);cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:none;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:1px;padding:4px 0;font-size:9px;text-decoration:none;transition:color .15s;display:flex}.mobile-bottom-nav .bnav-item .bnav-icon{font-size:18px;line-height:1}.mobile-bottom-nav .bnav-item.active{color:var(--accent-blue)}.mobile-bottom-nav .bnav-item:active{opacity:.7}.mobile-bottom-nav .bnav-label{margin:0}.sidebar{width:260px}.page-container{padding:8px 10px}.page-header{margin-bottom:12px}.page-title{font-size:17px}.page-subtitle{font-size:12px}.top-header{height:48px;padding:0 10px}.header-right .user-info span{display:none}.connection-badge{padding:2px 8px;font-size:10px}.connection-badge span{display:none}.stats-grid{grid-template-columns:repeat(2,1fr);gap:6px}.stat-card{padding:10px}.stat-card .stat-icon{margin-bottom:4px;font-size:18px}.stat-card .stat-value{font-size:17px}.stat-card .stat-label{font-size:10px}.signal-card{padding:10px 12px}.signal-card-header{margin-bottom:4px}.signal-code{font-size:13px}.signal-name{font-size:11px}.signal-price{font-size:12px}.signal-change{font-size:11px}.signal-body .tag{padding:1px 6px;font-size:10px}.signal-body .reason{font-size:11px}.signal-footer{font-size:10px}.confidence-bar{width:40px}.table-container{margin:0 -10px;padding:0 10px}thead th{padding:6px 8px;font-size:10px}tbody td{padding:6px 8px;font-size:11px}.card{padding:12px}.card-title{font-size:13px}.card-value{font-size:22px}.card-header{margin-bottom:10px}.chart-container{height:200px}.chart-container.large{height:240px}.btn{min-height:40px;padding:10px 16px}.btn-sm{min-height:32px;padding:6px 12px;font-size:12px}.btn-lg{min-height:48px;padding:12px 24px}.login-card{max-width:100%;padding:20px}.login-brand h1{font-size:20px}.login-brand{margin-bottom:24px}.form-group{margin-bottom:12px}.form-input,.form-select{padding:10px 12px;font-size:16px}.form-label{font-size:12px}.condition-row{flex-wrap:wrap;gap:6px}.condition-row select,.condition-row input{flex:1;min-width:80px}.modal{margin:8px;padding:14px}.modal-title{font-size:15px}.kpi-grid{grid-template-columns:repeat(2,1fr);gap:6px}.kpi-card{padding:10px}.kpi-card .kpi-value{font-size:16px}.tabs{-webkit-overflow-scrolling:touch;gap:0;overflow-x:auto}.tab{white-space:nowrap;padding:8px 12px;font-size:12px}.slider-container input[type=range]{height:6px}.slider-container input[type=range]::-webkit-slider-thumb{width:22px;height:22px}.toast{min-width:unset;max-width:calc(100vw - 32px);margin:0 8px}.toast-container{align-items:stretch;left:0;right:0}}@media (width<=380px){.stats-grid,.kpi-grid{grid-template-columns:1fr}.page-container{padding:6px 8px}.signal-code{font-size:12px}}@media (width<=768px){.condition-row{flex-wrap:wrap;gap:6px;padding:10px 0;position:relative}.condition-row select.form-select{appearance:none;background:var(--bg-input) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%238892a8' d='M6 8L1 3h10z'/%3E%3C/svg%3E") no-repeat right 10px center;width:100%!important;min-width:0!important;padding:10px 30px 10px 8px!important;font-size:15px!important}.condition-row .slider-container{flex-wrap:wrap;gap:4px;width:100%!important;min-width:0!important}.condition-row .slider-container span{font-size:12px!important}.condition-row .slider-container input[type=range]{flex:1;min-width:80px}.condition-row .btn-danger{position:absolute;top:6px;right:0;min-height:28px!important;padding:4px 8px!important;font-size:11px!important}.condition-row .condition-operator{padding:2px 6px!important;font-size:10px!important}.condition-header-select{width:auto!important;min-width:60px!important;font-size:13px!important}}@media (width<=400px){.condition-row select.form-select{padding:8px 6px!important;font-size:14px!important}}.template-debug-page{flex-direction:column;gap:16px;display:flex}.template-debug-tabs-card,.template-debug-summary-card,.template-debug-panel{width:100%}.template-debug-tabs{grid-template-columns:42px minmax(0,1fr) 42px;align-items:stretch;gap:10px;margin-top:14px;display:grid}.template-tab-window{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;display:grid;overflow:hidden}.template-tab,.template-tab-arrow{border:1px solid var(--border-color);color:var(--text-primary);cursor:pointer;background:#1a2332b8;border-radius:14px;transition:border-color .18s,background .18s,transform .18s}.template-tab{text-align:left;flex-direction:column;justify-content:center;gap:5px;min-height:72px;padding:12px;display:flex}.template-tab span{white-space:nowrap;text-overflow:ellipsis;font-weight:700;overflow:hidden}.template-tab small{color:var(--text-secondary);font-size:12px}.template-tab:hover,.template-tab-arrow:hover:not(:disabled){border-color:var(--accent-blue);background:#448aff24;transform:translateY(-1px)}.template-tab.active{border-color:var(--accent-cyan);background:linear-gradient(135deg,#448aff38,#00bcd429);box-shadow:0 10px 30px #00bcd41a}.template-tab.skeleton{color:var(--text-secondary);cursor:default}.template-tab-arrow{place-items:center;font-size:28px;font-weight:800;display:grid}.template-tab-arrow:disabled{opacity:.35;cursor:not-allowed}.generic-template-debug-panel .template-variable-editor{min-height:430px}.template-schedule-grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px;margin:12px 0 14px;display:grid}.template-schedule-editor{min-height:280px}.template-health-panel{margin-bottom:0}.intraday-template-debug-panel{flex-direction:column;gap:16px;display:flex}@media (width<=980px){.template-debug-tabs{grid-template-columns:36px minmax(0,1fr) 36px}.template-tab-window{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=560px){.template-tab-window{grid-template-columns:minmax(0,1fr)}}.intraday-briefing-page .header-actions{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.json-editor{border:1px solid var(--border-color,#e5e7eb);width:100%;min-height:520px;color:var(--text-primary,#111827);resize:vertical;background:#0f172a08;border-radius:14px;padding:14px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:13px;line-height:1.55}.briefing-preview-card{min-height:640px}.briefing-meta{color:var(--text-secondary,#64748b);flex-wrap:wrap;gap:8px;margin-bottom:12px;font-size:12px;display:flex}.briefing-meta span{border:1px solid var(--border-color,#e5e7eb);background:#ffffffb8;border-radius:999px;padding:4px 8px}.briefing-preview{white-space:pre-wrap;word-break:break-word;color:#0f172a;background:#f8fafc;border:1px solid #cbd5e1;border-radius:16px;min-height:520px;padding:20px;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:15px;line-height:1.85;box-shadow:inset 0 1px #ffffffd9,0 10px 30px #0f172a0f}.briefing-preview strong,.briefing-preview b,.briefing-preview-card .card-header h2{color:#0f172a}.scheduler-health-panel{background:linear-gradient(135deg,#448aff1a,#00bcd40f);border:1px solid #448aff47;border-radius:16px;margin:12px 0 14px;padding:14px}.card-header.compact{margin-bottom:10px}.card-header.compact h3{color:var(--text-primary);font-size:15px}.scheduler-health-grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px;display:grid}.health-item{border:1px solid var(--border-color);background:#0a0e176b;border-radius:12px;flex-direction:column;gap:4px;padding:12px;display:flex}.health-item span{color:var(--text-muted);font-size:12px}.health-item strong{color:var(--text-primary);word-break:break-all;font-size:14px}.health-item small{color:var(--text-secondary);font-size:11px}.portfolio-page{flex-direction:column;gap:16px;display:flex}.portfolio-summary-grid .stat-card{min-height:92px}.portfolio-trade-layout{grid-template-columns:minmax(0,1.2fr) minmax(360px,.8fr);align-items:start;gap:16px;display:grid}.portfolio-trade-left-card,.portfolio-trade-right-card{min-width:0}.portfolio-trade-right-card{position:sticky;top:16px}.portfolio-form-grid{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;display:grid}.portfolio-form-grid label{color:var(--text-secondary);flex-direction:column;gap:6px;font-size:12px;font-weight:600;display:flex}.portfolio-form-grid input,.portfolio-form-grid select{border:1px solid var(--border-color);border-radius:var(--radius-sm);background:var(--bg-input);width:100%;color:var(--text-primary);outline:none;padding:10px 12px}.portfolio-form-grid input:focus,.portfolio-form-grid select:focus{border-color:var(--accent-blue);background:var(--bg-input-focus)}.portfolio-note-field{grid-column:span 2}.portfolio-position-list{flex-direction:column;gap:14px;display:flex}.portfolio-position-card{border:1px solid var(--border-color);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);background:linear-gradient(135deg,#1a2332eb,#0f1825eb);padding:12px}.position-card-header{justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;display:flex}.position-card-actions{flex-wrap:wrap;gap:6px;display:flex}.btn.small{border-radius:var(--radius-sm);min-height:28px;padding:5px 10px;font-size:12px;line-height:1.2}.btn.trade-add{background:var(--accent-blue-bg);color:var(--accent-blue);border-color:#448aff59}.btn.trade-reduce{background:var(--accent-yellow-bg);color:var(--accent-yellow);border-color:#ffc10759}.btn.trade-note{background:var(--accent-green-bg);color:var(--accent-green);border-color:#00c85359}.position-card-header strong{color:var(--text-primary);font-size:15px}.position-grid{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}.position-pnl{color:var(--text-secondary);flex-wrap:wrap;gap:12px;margin-top:12px;font-size:12px;display:flex}.portfolio-trade-events-card .card-header{align-items:flex-start}.current-trade-summary{border-radius:var(--radius-md);background:#448aff14;border:1px solid #448aff40;flex-direction:column;gap:4px;margin:12px 0 14px;padding:12px;display:flex}.current-trade-summary span{color:var(--text-secondary);font-size:12px}.current-trade-summary strong{color:var(--text-primary);font-size:16px}.current-trade-summary small{color:var(--text-muted)}.trade-event-grid{margin-top:14px}.trade-event-list{flex-direction:column;gap:10px;margin-top:14px;display:flex}.trade-event-row{border:1px solid var(--border-color);border-radius:var(--radius-md);color:var(--text-secondary);background:#0f1825b8;grid-template-columns:auto minmax(90px,1fr) 80px 100px 100px minmax(160px,2fr) 140px;align-items:center;gap:10px;padding:12px;font-size:12px;display:grid}.trade-event-row strong{color:var(--text-primary)}.trade-event-row small{color:var(--text-muted);font-family:var(--font-mono)}.positive{color:var(--accent-red)!important}.negative{color:var(--accent-green)!important}.btn.danger{background:var(--accent-red-bg);color:var(--accent-red);border-color:#ff52524d}.portfolio-delete-confirm-overlay{-webkit-backdrop-filter:blur(8px);background:#05080db8}.portfolio-delete-confirm-modal{background:linear-gradient(145deg, var(--bg-secondary), var(--bg-card));border-color:#ff525247;max-width:460px;box-shadow:0 24px 80px #0000008f,0 0 0 1px #ff525214}.portfolio-delete-confirm-modal .modal-header{align-items:flex-start}.portfolio-delete-confirm-modal .modal-title{color:var(--text-primary);margin-top:8px;font-size:18px}.delete-confirm-body{color:var(--text-secondary);flex-direction:column;gap:12px;display:flex}.delete-confirm-target{border-radius:var(--radius-md);background:#ff525214;border:1px solid #ff52523d;flex-direction:column;gap:4px;padding:14px;display:flex}.delete-confirm-target strong{color:var(--text-primary);font-size:16px}.delete-confirm-target span,.delete-confirm-body small{color:var(--text-muted)}.modal-actions.delete-confirm-actions{justify-content:flex-end;gap:10px;margin-top:20px;display:flex}.modal-actions.delete-confirm-actions .btn{justify-content:center;min-width:96px}@media (width<=1024px){.portfolio-trade-layout{grid-template-columns:1fr}.portfolio-trade-right-card{position:static}}@media (width<=768px){.portfolio-note-field{grid-column:span 1}.position-card-header{flex-direction:column;align-items:flex-start;gap:10px}.trade-event-row{grid-template-columns:1fr}}.portfolio-cash-header{position:relative}.portfolio-cash-header-actions{flex-wrap:wrap;align-items:center;gap:14px}.portfolio-cash-note-wrap{display:inline-flex;position:relative}.portfolio-cash-action{min-width:74px;color:var(--text-secondary);background:#448aff1a;border-color:#448aff3d;justify-content:center}.portfolio-cash-action:hover{color:var(--text-primary);border-color:#448aff73}.cash-action-withdraw{background:var(--accent-blue-bg);color:var(--accent-blue);border-color:#448aff59;box-shadow:inset 0 0 0 1px #448aff14}.cash-action-deposit{background:var(--accent-yellow-bg);color:var(--accent-yellow);border-color:#ffd74066;box-shadow:inset 0 0 0 1px #ffd7401a}.cash-action-withdraw:hover{color:var(--accent-blue);background:#448aff29;border-color:#448aff8c}.cash-action-deposit:hover{color:var(--accent-yellow);background:#ffd7402e;border-color:#ffd7409e}.current-trade-symbol{flex-wrap:wrap;align-items:baseline;gap:10px;display:inline-flex}.current-trade-symbol.trade-add{color:var(--accent-blue)}.current-trade-symbol.trade-reduce{color:var(--accent-yellow)}.current-trade-symbol.trade-note{color:var(--accent-green)}.current-trade-symbol.trade-danger{color:var(--accent-red)}.current-trade-name{color:var(--text-primary);font-size:13px;font-style:normal;font-family:var(--font-sans)}.portfolio-note-popover{z-index:90;border:1px solid var(--border-color);border-radius:var(--radius-md);background:var(--bg-secondary);max-width:420px;color:var(--text-secondary);box-shadow:var(--shadow-lg);white-space:pre-wrap;overflow-wrap:anywhere;padding:12px 14px;position:absolute;top:calc(100% + 8px);left:0}.portfolio-cash-grid .readonly-field,.readonly-position-grid>div{border:1px solid var(--border-color);border-radius:var(--radius-md);background:#0f1825a3;flex-direction:column;gap:2px;padding:6px 7px;display:flex}.readonly-field span,.readonly-position-grid span{color:var(--text-muted);font-size:10px}.readonly-field strong,.readonly-position-grid strong{color:var(--text-primary);font-family:var(--font-mono);overflow-wrap:anywhere;font-size:12px}.latest-cash-event-card .btn{width:fit-content;margin-top:4px}.readonly-position-card.selected{border-color:var(--accent-blue);background:linear-gradient(135deg,#448aff21,#0f1825f2);box-shadow:0 0 0 1px #448aff38,0 16px 40px #448aff14}.readonly-position-grid{grid-template-columns:repeat(6,minmax(56px,1fr));gap:4px;display:grid}@media (width<=620px){.readonly-position-grid{grid-template-columns:repeat(3,minmax(92px,1fr))}}@media (width<=420px){.readonly-position-grid{grid-template-columns:repeat(2,minmax(96px,1fr))}}.record-view-tabs{flex-wrap:wrap;gap:8px;margin-bottom:12px;display:flex}.wrapped-record-list{max-width:100%}.trade-event-row.wrapped-record-row{overflow-wrap:anywhere;word-break:break-word;white-space:normal;grid-template-columns:minmax(0,1fr);gap:8px;display:grid}.wrapped-record-row p,.wrapped-record-row div,.wrapped-record-row small{overflow-wrap:anywhere;word-break:break-word;white-space:normal;min-width:0}.cash-event-row{border-color:#448aff33}.portfolio-operation-confirm-overlay{-webkit-backdrop-filter:blur(8px);background:#05080dbd}.portfolio-operation-confirm-modal{background:linear-gradient(145deg, var(--bg-secondary), var(--bg-card));border-color:#ffd7404d;max-width:520px;box-shadow:0 24px 80px #0000008f,0 0 0 1px #ffd74014}.operation-confirm-target span{color:var(--text-secondary);overflow-wrap:anywhere}.cash-operation-summary{background:#00c85314;border-color:#00c8533d}.alert{border:1px solid var(--border-color);border-radius:var(--radius-md);background:var(--bg-tertiary);color:var(--text-secondary);padding:11px 14px;font-size:13px;line-height:1.6}.alert.success{background:var(--accent-green-bg);color:var(--accent-green);border-color:#00c8536b}.alert.error,.alert.danger{background:var(--accent-red-bg);color:var(--accent-red);border-color:#ff52526b}.alert.info,.alert.alert-info{background:var(--accent-blue-bg);color:var(--accent-blue);border-color:#448aff6b}.alert.warning{background:var(--accent-yellow-bg);color:var(--accent-yellow);border-color:#ffd7406b}.ai-provider-page .muted{color:var(--text-secondary);font-size:13px}.ai-provider-page{flex-direction:column;gap:16px;display:flex}.ai-provider-header{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.ai-provider-header .header-actions,.ai-provider-actions{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.ai-provider-message{margin-top:-4px}.ai-provider-summary-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;display:grid}.ai-provider-metric{border:1px solid var(--border-color);border-radius:var(--radius-md);min-height:104px;box-shadow:var(--shadow-sm);flex-direction:column;justify-content:center;gap:5px;padding:16px;display:flex}.ai-provider-metric span{color:var(--text-muted);font-size:12px;font-weight:600}.ai-provider-metric strong{color:var(--text-primary);font-size:24px;font-family:var(--font-mono);overflow-wrap:anywhere;line-height:1.2}.ai-provider-metric small{color:var(--text-secondary);font-size:11px}.ai-provider-tabs-card .card-header,.ai-provider-detail-card .card-header,.ai-provider-side-card .card-header,.ai-provider-security-notes .card-header{align-items:flex-start;gap:12px}.ai-provider-tab-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;display:grid}.ai-provider-tab{border:1px solid var(--border-color);min-width:0;color:var(--text-primary);cursor:pointer;text-align:left;background:linear-gradient(135deg,#1a2332eb,#0f1825eb);border-radius:16px;padding:14px;transition:border-color .18s,background .18s,transform .18s,box-shadow .18s}.ai-provider-tab:hover{border-color:var(--provider-accent,var(--accent-blue));transform:translateY(-1px)}.ai-provider-tab:disabled{cursor:wait;opacity:.68;transform:none}.ai-provider-tab:disabled:hover{border-color:var(--border-color)}.ai-provider-tab.active{border-color:var(--provider-accent,var(--accent-cyan));background:linear-gradient(135deg, var(--provider-accent-bg,var(--accent-blue-bg)), #0f1825f5);box-shadow:0 12px 32px #00bcd41a,0 0 0 1px #448aff1f}.ai-provider-tab-main{align-items:flex-start;gap:12px;margin-bottom:12px;display:flex}.ai-provider-icon{background:var(--provider-accent-bg,var(--bg-tertiary));border:1px solid #ffffff0d;border-radius:14px;place-items:center;width:42px;height:42px;font-size:22px;display:grid}.ai-provider-tab-main strong{color:var(--text-primary);margin-bottom:2px;font-size:15px;display:block}.ai-provider-tab-main small,.ai-provider-tab-foot,.ai-provider-rich-help{color:var(--text-secondary);font-size:12px}.ai-provider-tab-badges,.ai-provider-chip-list{flex-wrap:wrap;gap:6px;display:flex}.ai-provider-tab-foot{font-family:var(--font-mono);overflow-wrap:anywhere;justify-content:space-between;gap:10px;margin-top:12px;display:flex}.ai-provider-layout{grid-template-columns:minmax(0,1.35fr) minmax(320px,.65fr);align-items:start;gap:16px;display:grid}.ai-provider-side-column{flex-direction:column;gap:16px;display:flex}.ai-provider-detail-card,.ai-provider-side-card,.ai-provider-security-notes{min-width:0}.ai-provider-section{border-top:1px solid var(--border-color);margin-top:18px;padding-top:16px}.ai-provider-section-title{flex-direction:column;gap:3px;margin-bottom:12px;display:flex}.ai-provider-section-title strong,.ai-provider-security-panel strong{color:var(--text-primary);font-size:14px}.ai-provider-section-title span,.ai-provider-security-panel p{color:var(--text-muted);font-size:12px}.ai-provider-form-grid{gap:12px}.ai-provider-toggle-row{min-height:88px}.ai-provider-security-panel{border-radius:var(--radius-lg);background:linear-gradient(135deg,#448aff1a,#00bcd40f);border:1px solid #448aff47;grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:12px;margin-top:18px;padding:14px;display:grid}.ai-provider-key-status{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:8px;display:flex}.ai-provider-key-status code,.ai-provider-endpoint-box code{font-family:var(--font-mono);color:var(--text-primary);border:1px solid var(--border-color);overflow-wrap:anywhere;background:#0a0e178f;border-radius:8px;padding:4px 7px}.ai-provider-key-input{grid-column:1/-1;margin-bottom:0}.ai-provider-runtime-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;display:grid}.ai-provider-actions{border-top:1px solid var(--border-color);margin-top:18px;padding-top:16px}.ai-provider-actions .btn{justify-content:center;min-width:112px}.ai-provider-error{margin-top:14px}.ai-provider-endpoint-box{border:1px solid var(--border-color);border-radius:var(--radius-md);background:#0f1825a3;flex-direction:column;gap:6px;margin-top:12px;padding:10px;display:flex}.ai-provider-endpoint-box span{color:var(--text-muted);font-size:11px}.ai-provider-health-grid,.ai-provider-security-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:12px;display:grid}.ai-provider-callchain{flex-direction:column;gap:8px;margin:12px 0;display:flex}.ai-provider-callchain-step{grid-template-columns:28px minmax(0,1fr);align-items:center;gap:9px;display:grid}.ai-provider-callchain-step span{background:var(--accent-blue-bg);width:28px;height:28px;color:var(--accent-blue);font-family:var(--font-mono);border:1px solid #448aff59;border-radius:50%;place-items:center;font-size:12px;font-weight:800;display:grid}.ai-provider-callchain-step strong{color:var(--text-primary);font-size:13px}.ai-provider-security-notes{margin-bottom:4px}@media (width<=1180px){.ai-provider-layout{grid-template-columns:1fr}.ai-provider-side-column{grid-template-columns:repeat(3,minmax(0,1fr));align-items:stretch;display:grid}}@media (width<=960px){.ai-provider-summary-grid,.ai-provider-tab-grid,.ai-provider-side-column{grid-template-columns:1fr 1fr}}@media (width<=680px){.ai-provider-header,.ai-provider-security-panel{flex-direction:column;grid-template-columns:1fr}.ai-provider-summary-grid,.ai-provider-tab-grid,.ai-provider-side-column,.ai-provider-runtime-grid,.ai-provider-health-grid,.ai-provider-security-grid{grid-template-columns:1fr}.ai-provider-tab-foot{flex-direction:column}.ai-provider-key-status{justify-content:flex-start}.ai-provider-actions .btn{width:100%}}.schedule-form-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:16px 0;display:grid}.schedule-form-grid .form-group{min-width:0}.schedule-form-grid .compact-toggle{border:1px solid var(--border-color);border-radius:var(--radius-md);background:var(--bg-input);justify-content:space-between;align-items:center;gap:12px;min-height:64px;padding:10px 12px;display:flex}@media (width<=960px){.schedule-form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=640px){.schedule-form-grid{grid-template-columns:1fr}}
