*,:before,:after{box-sizing:border-box}:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility;font-family:system-ui,Segoe UI,Roboto,sans-serif;font-size:16px;line-height:1.5}body{background:#0f172a;margin:0}#root{width:100%;min-height:100dvh}:focus-visible{outline-offset:2px;border-radius:4px;outline:2px solid #3b82f6}button:focus-visible{border-radius:6px}input:focus-visible{border-radius:8px}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.login-page{background:#0f172a;justify-content:center;align-items:center;min-height:100dvh;padding:1rem;display:flex}.login-card{background:#1e293b;border-radius:12px;flex-direction:column;gap:.75rem;width:100%;max-width:400px;padding:2.5rem;display:flex}.login-title{color:#f8fafc;margin:0;font-size:1.5rem;font-weight:700;line-height:1.2}.login-sub{color:#64748b;margin:0;font-size:.875rem}.login-label{color:#94a3b8;font-size:.85rem}.login-input{color:#f8fafc;box-sizing:border-box;background:#0f172a;border:1px solid #334155;border-radius:8px;outline:none;width:100%;min-height:44px;padding:.65rem .9rem;font-size:1rem;transition:border-color .15s}.login-input:focus{border-color:#3b82f6}.login-pwd-wrap{align-items:center;display:flex;position:relative}.login-pwd-wrap .login-input{padding-right:2.75rem}.login-eye{cursor:pointer;touch-action:manipulation;background:0 0;border:none;border-radius:4px;justify-content:center;align-items:center;min-width:32px;min-height:32px;padding:4px;transition:background .15s;display:flex;position:absolute;right:.65rem}.login-eye:hover{background:#ffffff12}.login-btn{color:#fff;cursor:pointer;touch-action:manipulation;background:#3b82f6;border:none;border-radius:8px;min-height:48px;margin-top:.5rem;padding:.75rem;font-size:1rem;font-weight:600;transition:background .15s}.login-btn:hover{background:#2563eb}.login-btn:active{background:#1d4ed8}.login-btn:disabled{color:#cbd5e1;cursor:not-allowed;background:#1d4ed8}.login-error{color:#fca5a5;background:#450a0a;border-radius:8px;padding:.6rem .9rem;font-size:.875rem}.login-steps{justify-content:center;gap:.5rem;padding-bottom:.25rem;display:flex}.login-step-dot{background:#334155;border-radius:50%;width:8px;height:8px;transition:background .25s,transform .25s}.login-step-dot.active{background:#3b82f6;transform:scale(1.25)}.login-step-dot.done{background:#22c55e}.login-totp{letter-spacing:.4rem;text-align:center;font-variant-numeric:tabular-nums;border-color:#3b82f6;font-size:1.8rem}.login-back{color:#64748b;cursor:pointer;touch-action:manipulation;background:0 0;border:none;border-radius:6px;align-self:center;min-height:36px;padding:.5rem 1rem;font-size:.875rem;transition:color .15s,background .15s}.login-back:hover{color:#94a3b8;background:#ffffff0a}@media (width<=480px){.login-card{border-radius:8px;padding:1.75rem 1.25rem}}.v2fa-page{background:#0f172a;justify-content:center;align-items:center;min-height:100dvh;padding:1rem;display:flex}.v2fa-card{background:#1e293b;border-radius:12px;flex-direction:column;align-items:center;gap:.75rem;width:100%;max-width:380px;padding:2.5rem;display:flex}.v2fa-title{color:#f8fafc;margin:0;font-size:1.4rem;font-weight:700;line-height:1.2}.v2fa-sub{color:#64748b;text-align:center;font-size:.875rem;line-height:1.5}.v2fa-label{color:#94a3b8;width:100%;font-size:.85rem}.v2fa-input{color:#f8fafc;text-align:center;letter-spacing:.4rem;box-sizing:border-box;font-variant-numeric:tabular-nums;background:#0f172a;border:2px solid #3b82f6;border-radius:8px;outline:none;width:100%;min-height:56px;padding:.75rem;font-size:1.8rem;transition:border-color .15s}.v2fa-input:focus{border-color:#60a5fa}.v2fa-btn{color:#fff;cursor:pointer;touch-action:manipulation;background:#3b82f6;border:none;border-radius:8px;width:100%;min-height:48px;padding:.75rem;font-size:1rem;font-weight:600;transition:background .15s}.v2fa-btn:hover{background:#2563eb}.v2fa-btn:active{background:#1d4ed8}.v2fa-btn:disabled{color:#cbd5e1;cursor:not-allowed;background:#1d4ed8}.v2fa-back{color:#64748b;cursor:pointer;touch-action:manipulation;background:0 0;border:none;border-radius:6px;min-height:36px;padding:.5rem 1rem;font-size:.875rem;transition:color .15s,background .15s}.v2fa-back:hover{color:#94a3b8;background:#ffffff0a}.v2fa-error{color:#fca5a5;box-sizing:border-box;background:#450a0a;border-radius:8px;width:100%;padding:.6rem .9rem;font-size:.875rem;line-height:1.5}@media (width<=480px){.v2fa-card{border-radius:8px;padding:1.75rem 1.25rem}}.dash-page{color:#cbd5e1;background:#0f172a;min-height:100dvh;font-family:system-ui,sans-serif;line-height:1.5}.dash-header{background:#1e293b;border-bottom:1px solid #334155;align-items:center;gap:1rem;padding:.85rem 1.5rem;display:flex}.dash-logo{color:#f8fafc;font-size:1.1rem;font-weight:700}.dash-zones{flex:1;align-items:stretch;gap:0;margin:0 .75rem;display:flex;overflow:hidden}.dash-zone{font-variant-numeric:tabular-nums;border-left:1px solid #334155;flex-direction:column;gap:.05rem;min-width:0;padding:0 .85rem;display:flex}.dash-zone:first-child{border-left:none;padding-left:0}.dash-zone-label{color:#64748b;text-transform:uppercase;letter-spacing:.06em;align-items:center;gap:.35rem;font-size:.68rem;display:flex}.dash-zone-value{color:#f8fafc;white-space:nowrap;align-items:center;gap:.3rem;font-size:.9rem;font-weight:600;display:flex}.dash-zone-sub{color:#94a3b8;white-space:nowrap;font-size:.75rem}.dash-logout{color:#94a3b8;cursor:pointer;white-space:nowrap;touch-action:manipulation;background:#334155;border:none;border-radius:6px;min-height:36px;padding:.4rem .9rem;font-size:.875rem;transition:background .15s,color .15s}.dash-logout:hover{color:#e2e8f0;background:#475569}.dash-logout:active{background:#1e293b}.dash-refresh{color:#64748b;cursor:pointer;white-space:nowrap;touch-action:manipulation;background:0 0;border:1px solid #334155;border-radius:6px;align-items:center;gap:.35rem;min-height:36px;padding:.35rem .6rem;font-size:.8rem;transition:color .15s,border-color .15s;display:flex}.dash-refresh:hover{color:#94a3b8;border-color:#475569}.dash-refresh:disabled{opacity:.5;cursor:default}.dash-refresh.spinning svg{animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.dash-cost{color:#64748b;white-space:nowrap;cursor:default;font-variant-numeric:tabular-nums;border:1px solid #334155;border-radius:6px;padding:.25rem .5rem;font-size:.75rem}.settings-refresh-bar{justify-content:space-between;align-items:center;gap:1rem;padding-top:1.25rem;display:flex}.settings-last-update{color:#64748b;font-size:.8rem}.dash-alert{color:#fca5a5;background:#450a0a;padding:.75rem 1.5rem;font-size:.9rem}.dash-model{color:#60a5fa;background:#0f2744;border-bottom:1px solid #1e3a5f;padding:.5rem 1.5rem;font-size:.85rem}.dash-tabs{gap:.25rem;padding:1.25rem 1.5rem 0;display:flex;overflow-x:auto}.dash-tab{color:#64748b;cursor:pointer;white-space:nowrap;touch-action:manipulation;background:0 0;border:none;border-bottom:2px solid #0000;border-radius:6px 6px 0 0;min-height:44px;padding:.65rem 1.25rem;font-size:.95rem;transition:color .15s,background .15s}.dash-tab:hover{color:#94a3b8;background:#0f172a40}.dash-tab:active{background:#0f172a80}.dash-tab.active{color:#f8fafc;background:#1e293b;border-bottom-color:#3b82f6;font-weight:600}.dash-content{background:#1e293b;border-radius:0 8px 8px;margin:0 1.5rem 2rem;padding:0 1.5rem 2rem}.dash-content h2{color:#f8fafc;margin:0;padding:1.25rem 0 .75rem;font-size:1rem;font-weight:600}.scores-header{justify-content:space-between;align-items:center;gap:1rem;display:flex}.hist-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:.5rem;display:flex}.hist-filters{flex-wrap:wrap;align-items:center;gap:.75rem;display:flex}.hist-filter-group{align-items:center;gap:.4rem;display:flex}.hist-filter-label{color:#64748b;text-transform:uppercase;letter-spacing:.06em;white-space:nowrap;font-size:.72rem}.sym-tag{cursor:default;color:#f8fafc;border-bottom:1px dashed #475569;font-weight:700;display:inline-block;position:relative}.sym-tag[data-tip]:after{content:attr(data-tip);color:#e2e8f0;white-space:nowrap;pointer-events:none;opacity:0;z-index:200;background:#1e293b;border:1px solid #475569;border-radius:6px;padding:.3rem .65rem;font-size:.75rem;font-weight:400;transition:opacity .12s;position:absolute;bottom:calc(100% + 7px);left:0;transform:none;box-shadow:0 4px 12px #0006}.sym-tag[data-tip]:hover:after{opacity:1}.top-filter{gap:.375rem;display:flex}.top-filter-btn{color:#94a3b8;cursor:pointer;touch-action:manipulation;background:#334155;border:none;border-radius:6px;padding:.3rem .75rem;font-size:.8rem;transition:background .15s,color .15s}.top-filter-btn:hover{color:#e2e8f0;background:#475569}.top-filter-btn.active{color:#fff;background:#3b82f6}.asset-badge{letter-spacing:.03em;white-space:nowrap;border-radius:4px;padding:.15rem .45rem;font-size:.7rem;font-weight:700;display:inline-block}.asset-badge.stock{color:#93c5fd;background:#1e3a5f}.asset-badge.crypto{color:#fb923c;background:#431407}.scores-filters{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.trade-crypto{background:#1a0d00!important}.dash-table tbody .trade-crypto:hover{background:#2a1500!important}.table-wrap{-webkit-overflow-scrolling:touch;overflow-x:auto}.dash-table{border-collapse:collapse;width:100%;font-size:.875rem}.dash-table th{text-align:left;color:#64748b;white-space:nowrap;border-bottom:1px solid #334155;padding:.6rem .75rem;font-weight:500}.dash-table td{color:#cbd5e1;font-variant-numeric:tabular-nums;padding:.6rem .75rem}.dash-table tr:nth-child(odd){background:#ffffff08}.dash-table tbody tr:hover{background:#ffffff12}.score-badge{color:#fff;font-variant-numeric:tabular-nums;border-radius:4px;padding:.2rem .6rem;font-size:.85rem;font-weight:700}.skeleton-wrap{flex-direction:column;gap:.5rem;padding:1rem 0;display:flex}.skeleton-row{align-items:center;gap:1rem;display:flex}.skeleton-cell{background:linear-gradient(90deg,#1e293b 25%,#334155 50%,#1e293b 75%) 0 0/200% 100%;border-radius:4px;height:1rem;animation:1.5s infinite shimmer}.skeleton-cell.short{width:40px}.skeleton-cell.medium{width:80px}.skeleton-cell.long{width:140px}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.totp-wrap{max-width:480px;padding-top:1.5rem}.totp-wrap h2{color:#f8fafc;margin-bottom:.5rem;font-size:1rem;font-weight:600}.totp-desc{color:#64748b;margin-bottom:1.5rem;font-size:.875rem;line-height:1.6}.totp-step{color:#94a3b8;margin:1rem 0 .5rem;font-size:.85rem}.totp-qr{border:2px solid #334155;border-radius:8px;display:block}.totp-form{align-items:center;gap:.75rem;margin-top:.75rem;display:flex}.totp-input{color:#f8fafc;letter-spacing:.3rem;text-align:center;font-variant-numeric:tabular-nums;background:#0f172a;border:1px solid #334155;border-radius:8px;outline:none;width:160px;min-height:44px;padding:.65rem 1rem;font-size:1.4rem;transition:border-color .15s}.totp-input:focus{border-color:#3b82f6}.totp-btn{color:#fff;cursor:pointer;white-space:nowrap;touch-action:manipulation;background:#3b82f6;border:none;border-radius:8px;min-height:44px;padding:.65rem 1.25rem;font-size:.95rem;font-weight:600;transition:background .15s}.totp-btn:hover{background:#2563eb}.totp-btn:active{background:#1d4ed8}.totp-btn:disabled{color:#94a3b8;cursor:not-allowed;background:#1d4ed8}.totp-error{color:#fca5a5;margin-top:.75rem;font-size:.875rem}.totp-success{color:#22c55e;align-items:center;gap:.75rem;padding-top:1.5rem;display:flex}.totp-secret-wrap{background:#0f172a;border:1px solid #334155;border-radius:8px;align-items:center;gap:.5rem;padding:.5rem .75rem;display:flex}.totp-secret{color:#f8fafc;letter-spacing:.1rem;word-break:break-all;flex:1;font-family:ui-monospace,monospace;font-size:.9rem}.totp-copy{color:#64748b;cursor:pointer;touch-action:manipulation;background:0 0;border:none;border-radius:4px;flex-shrink:0;justify-content:center;align-items:center;min-width:28px;min-height:28px;padding:4px;transition:color .15s,background .15s;display:flex}.totp-copy:hover{color:#94a3b8;background:#334155}.daily-pnl{font-variant-numeric:tabular-nums;vertical-align:middle;border-radius:4px;align-items:center;gap:2px;margin-left:.4rem;padding:.1rem .4rem;font-size:.8rem;font-weight:600;display:inline-flex}.daily-pnl.up{color:#4ade80;background:#14532d40}.daily-pnl.down{color:#f87171;background:#450a0a40}.settings-wrap{max-width:520px;padding-top:1.5rem}.settings-section h2{color:#f8fafc;margin-bottom:.25rem;padding:0;font-size:1rem;font-weight:600}.settings-desc{color:#64748b;margin-bottom:1.25rem;font-size:.85rem;line-height:1.5}.settings-divider{border:none;border-top:1px solid #334155;margin:2rem 0}.settings-actions{align-items:center;gap:1rem;margin-top:1.25rem;display:flex}.settings-ok{color:#4ade80;font-size:.875rem}.engine-selector{flex-direction:column;gap:.5rem;margin-bottom:1rem;display:flex}.engine-btn{color:#94a3b8;cursor:pointer;text-align:left;touch-action:manipulation;background:#0f172a;border:1px solid #334155;border-radius:8px;align-items:center;gap:.6rem;min-height:44px;padding:.65rem 1rem;font-size:.9rem;transition:border-color .15s,color .15s;display:flex}.engine-btn:hover{color:#e2e8f0;border-color:#475569}.engine-btn.active{color:#f8fafc;background:#0f2744;border-color:#3b82f6}.engine-dot{border-radius:50%;flex-shrink:0;width:8px;height:8px}.engine-dot.gemini{background:#60a5fa}.engine-dot.claude{background:#c084fc}.engine-dot.ollama{background:#4ade80}.ollama-config{flex-direction:column;gap:.75rem;margin-bottom:.5rem;display:flex}.settings-field{flex-direction:column;gap:.35rem;display:flex}.settings-field label{color:#94a3b8;font-size:.8rem}.settings-input{color:#f8fafc;background:#0f172a;border:1px solid #334155;border-radius:8px;outline:none;min-height:44px;padding:.55rem .9rem;font-family:ui-monospace,monospace;font-size:.9rem;transition:border-color .15s}.settings-input:focus{border-color:#3b82f6}.info-box-wrap{vertical-align:middle;margin-left:.5rem;display:inline-block;position:relative}.info-btn{color:#64748b;cursor:pointer;touch-action:manipulation;background:#334155;border:none;border-radius:50%;justify-content:center;align-items:center;width:18px;height:18px;font-size:.7rem;font-weight:700;transition:background .15s,color .15s;display:inline-flex}.info-btn:hover{color:#e2e8f0;background:#475569}.info-popover{z-index:100;background:#1e293b;border:1px solid #334155;border-radius:8px;min-width:260px;max-width:320px;padding:.75rem 1rem .5rem;font-size:.8rem;position:absolute;top:24px;left:0;box-shadow:0 8px 24px #00000060}.info-line{color:#94a3b8;padding:.1rem 0;line-height:1.6}.info-bold{color:#cbd5e1;margin-bottom:.35rem;font-weight:500}.info-label{color:#60a5fa;font-weight:600}.info-close{color:#475569;cursor:pointer;background:0 0;border:none;margin-top:.5rem;padding:0;font-size:.75rem;display:block}.info-close:hover{color:#94a3b8}.history-timeline{flex-direction:column;padding:.5rem 0 1rem;display:flex}.history-event{border-bottom:1px solid #1e293b;align-items:flex-start;gap:.85rem;padding:.6rem 0;display:flex}.history-event:last-child{border-bottom:none}.history-run{opacity:.45}.history-run:hover{opacity:.75}.history-dot{color:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:28px;height:28px;margin-top:2px;font-size:.75rem;font-weight:700;display:flex}.history-body{flex:1;min-width:0}.history-title{flex-wrap:wrap;align-items:center;gap:.5rem;font-size:.9rem;display:flex}.history-detail{color:#64748b;margin-top:.15rem;font-size:.8rem}.history-time{color:#475569;font-variant-numeric:tabular-nums;margin-top:.15rem;font-size:.75rem}.dash-chart{cursor:crosshair;background:#0a1628;border-bottom:1px solid #1e293b}.dash-zone-total .dash-zone-value{color:#a78bfa}.paper-badge{color:#4ade80;letter-spacing:.08em;vertical-align:middle;background:#14532d;border:1px solid #166534;border-radius:4px;margin-left:.4rem;padding:.1rem .4rem;font-size:.65rem;font-weight:700;display:inline-block}.paper-stats{background:#0f172a;border:1px solid #334155;border-radius:8px;flex-wrap:wrap;gap:1.5rem;margin-top:.25rem;padding:.75rem 1rem;display:flex}.paper-stat{flex-direction:column;gap:.15rem;display:flex}.paper-stat-label{color:#64748b;font-size:.75rem}.paper-stat-value{color:#f8fafc;font-variant-numeric:tabular-nums;font-size:.95rem;font-weight:600}.paper-stat-value.up{color:#4ade80}.paper-stat-value.down{color:#f87171}@media (width<=640px){.dash-header{gap:.5rem;padding:.75rem 1rem}.dash-zones{gap:0;margin:0 .25rem}.dash-zone{padding:0 .5rem}.dash-zone-total,.dash-zone:nth-child(2){display:none}.dash-zone-value{font-size:.8rem}.dash-zone-sub{display:none}.dash-tabs{padding:1rem .75rem 0}.dash-content{border-radius:0;margin:0 0 1.5rem;padding:0 .75rem 1.5rem}.dash-alert,.dash-model{padding:.6rem 1rem}.dash-table th,.dash-table td{padding:.5rem .6rem;font-size:.8rem}}
