:root{--bg: #070b18;--bg-2: #0b1224;--surface: #131b31;--surface-2: #1a2440;--surface-3: #223056;--border: #2a3557;--border-soft: rgba(255, 255, 255, .06);--text: #eaf0fb;--muted: #8b96b3;--text-muted: #8b96b3;--accent: #4f8cff;--accent-2: #6ea8ff;--accent-ink: #dceaff;--green: #2ee6a8;--red: #ff5d6c;--amber: #ffb648;--purple: #a78bfa;--cyan: #38e1ff;--pink: #ff7ac6;--danger: var(--red);--success: var(--green);--warning: var(--amber);--grad-accent: linear-gradient(135deg, #4f8cff 0%, #6ea8ff 50%, #38e1ff 100%);--grad-green: linear-gradient(135deg, #2ee6a8 0%, #34d399 100%);--grad-red: linear-gradient(135deg, #ff5d6c 0%, #ff8a5d 100%);--grad-surface: linear-gradient(180deg, rgba(255,255,255,.045), rgba(255,255,255,.012));--grad-brand: linear-gradient(120deg, #4f8cff, #a78bfa 55%, #38e1ff);--font-sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-mono: "JetBrains Mono", ui-monospace, "SF Mono", "Roboto Mono", Menlo, monospace;--radius-sm: 8px;--radius: 14px;--radius-lg: 20px;--radius-pill: 999px;--shadow-1: 0 1px 2px rgba(3, 7, 18, .5);--shadow-2: 0 6px 20px -8px rgba(3, 7, 18, .7);--shadow-3: 0 18px 50px -14px rgba(3, 7, 18, .85);--shadow-pop: 0 24px 70px -20px rgba(3, 7, 18, .9);--glow-accent: 0 0 0 1px rgba(79, 140, 255, .25), 0 8px 30px -6px rgba(79, 140, 255, .35);--glow-green: 0 8px 30px -8px rgba(46, 230, 168, .4);--glow-red: 0 8px 30px -8px rgba(255, 93, 108, .4);--ease: cubic-bezier(.22, 1, .36, 1);--ease-in-out: cubic-bezier(.65, 0, .35, 1);--dur-fast: .12s;--dur: .22s;--dur-slow: .42s;font-family:var(--font-sans);color-scheme:dark}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;color:var(--text);background:var(--bg);font-family:var(--font-sans);line-height:1.5;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;letter-spacing:.01em}body:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;z-index:-1;pointer-events:none;background:radial-gradient(60% 55% at 8% -5%,rgba(79,140,255,.16),transparent 60%),radial-gradient(55% 50% at 100% 0%,rgba(167,139,250,.12),transparent 55%),radial-gradient(60% 60% at 100% 100%,rgba(46,230,168,.08),transparent 60%),linear-gradient(180deg,var(--bg) 0%,var(--bg-2) 100%)}a{color:var(--accent);text-decoration:none;transition:color var(--dur-fast) var(--ease)}a:hover{color:var(--accent-2)}.num,td,th{font-variant-numeric:tabular-nums}h1{font-size:24px;margin:0 0 4px;font-weight:800;letter-spacing:-.02em}h2{letter-spacing:-.01em}button{font:inherit;font-weight:500;cursor:pointer;border:1px solid var(--border);background:var(--surface-2);color:var(--text);padding:9px 15px;border-radius:var(--radius-sm);transition:transform var(--dur-fast) var(--ease),border-color var(--dur) var(--ease),background var(--dur) var(--ease),box-shadow var(--dur) var(--ease),color var(--dur) var(--ease)}button:hover{border-color:var(--accent);color:var(--text);box-shadow:var(--shadow-2)}button:active{transform:translateY(1px) scale(.99)}button:focus-visible{outline:none;box-shadow:0 0 0 3px #4f8cff66}button:disabled{opacity:.5;cursor:not-allowed}button.primary{background:var(--grad-accent);border-color:transparent;color:#04102a;font-weight:700;box-shadow:var(--glow-accent)}button.primary:hover{filter:brightness(1.06);box-shadow:0 0 0 1px #4f8cff59,0 12px 36px -6px #4f8cff80}button.danger{color:var(--red)}button.danger:hover{border-color:var(--red);box-shadow:var(--glow-red)}input,select,textarea{font:inherit;background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:var(--radius-sm);padding:10px 12px;width:100%;transition:border-color var(--dur) var(--ease),box-shadow var(--dur) var(--ease),background var(--dur) var(--ease)}input::placeholder,textarea::placeholder{color:var(--muted)}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px #4f8cff38;background:var(--surface-2)}.shell{display:grid;grid-template-columns:260px 1fr;min-height:100vh}.sidebar{background:linear-gradient(180deg,#141b30b8,#0b1224b8);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-right:1px solid var(--border-soft);padding:18px 12px;position:sticky;top:0;height:100vh;overflow-y:auto}.brand{font-weight:800;font-size:20px;padding:8px 10px 18px;letter-spacing:-.02em;background:var(--grad-brand);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}.brand small{display:block;color:var(--muted);font-weight:600;font-size:11px;letter-spacing:.08em;text-transform:uppercase;-webkit-text-fill-color:var(--muted)}.nav-section{margin-bottom:14px}.nav-section:not(:last-of-type){border-bottom:1px solid var(--border-soft);padding-bottom:8px}.section-title{color:var(--muted);font-size:10.5px;text-transform:uppercase;padding:8px 10px 6px;letter-spacing:.1em;font-weight:700}.nav-link{display:flex;gap:11px;align-items:center;padding:9px 11px;border-radius:10px;color:var(--text);font-size:14px;font-weight:500;position:relative;transition:background var(--dur) var(--ease),color var(--dur) var(--ease),transform var(--dur-fast) var(--ease)}.nav-link:hover{background:var(--surface-2)}.nav-link:active{transform:scale(.98)}.nav-link.router-link-active{background:linear-gradient(90deg,#4f8cff38,#4f8cff0f);color:#fff;box-shadow:inset 0 0 0 1px #4f8cff59}.nav-link.router-link-active:before{content:"";position:absolute;left:-12px;top:8px;bottom:8px;width:3px;border-radius:3px;background:var(--grad-accent);box-shadow:var(--glow-accent)}.nav-icon{display:inline-flex;align-items:center;justify-content:center;width:20px;flex-shrink:0;color:var(--muted)}.nav-link:hover .nav-icon{color:var(--accent-2)}.nav-link.router-link-active .nav-icon{color:#fff}.main{display:flex;flex-direction:column;min-width:0}.topbar{display:flex;justify-content:space-between;align-items:center;padding:14px 28px;border-bottom:1px solid var(--border-soft);gap:20px;background:linear-gradient(180deg,#0b1122bf,#0b112259);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);position:sticky;top:0;z-index:20}.topbar-left{display:flex;align-items:center;gap:12px;min-width:0}.topbar-crumb{display:flex;align-items:baseline;gap:8px;font-size:14px;color:var(--muted)}.topbar-crumb strong{color:var(--text);font-weight:700}.topbar-right{display:flex;align-items:center;gap:14px}.topbar-links{display:flex;gap:8px}.topbar-link{padding:8px 14px;border-radius:10px;font-size:13px;font-weight:600;color:var(--muted);transition:all var(--dur) var(--ease);display:flex;align-items:center;gap:6px}.topbar-link:hover,.topbar-link.active{color:var(--accent);background:var(--surface-2)}.topbar .user{color:var(--muted);font-size:14px;white-space:nowrap}.user-chip{display:inline-flex;align-items:center;gap:10px;padding:5px 12px 5px 5px;border:1px solid var(--border-soft);border-radius:var(--radius-pill);background:var(--surface-2)}.avatar{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;background:var(--grad-brand);color:#051024;font-weight:800;font-size:13px;text-transform:uppercase}.user-chip .role{text-transform:capitalize;font-weight:600;color:var(--text)}.user-chip .uname{color:var(--muted)}.live-dot{width:8px;height:8px;border-radius:50%;background:var(--green);box-shadow:0 0 #2ee6a899;animation:pulse 2.2s var(--ease) infinite}@keyframes pulse{0%{box-shadow:0 0 #2ee6a88c}70%{box-shadow:0 0 0 8px #2ee6a800}to{box-shadow:0 0 #2ee6a800}}.content{padding:28px;flex:1;min-width:0}.page-sub{color:var(--muted);margin:0 0 22px;font-size:14px}.grid{display:grid;gap:16px}.kpis{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.card{background:var(--grad-surface),var(--surface);border:1px solid var(--border-soft);border-radius:var(--radius);padding:18px;box-shadow:var(--shadow-2);transition:transform var(--dur) var(--ease),box-shadow var(--dur) var(--ease),border-color var(--dur) var(--ease)}.card.hoverable:hover{transform:translateY(-3px);box-shadow:var(--shadow-3);border-color:#4f8cff59}.card h3{margin:0 0 6px;font-size:12px;color:var(--muted);font-weight:700;text-transform:uppercase;letter-spacing:.05em}.card .big{font-size:28px;font-weight:800;font-variant-numeric:tabular-nums;letter-spacing:-.02em}.card.table-card{padding:0;overflow:hidden}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:11px 14px;border-bottom:1px solid var(--border-soft);font-size:14px}th{color:var(--muted);font-weight:700;font-size:11px;text-transform:uppercase;letter-spacing:.05em}tbody tr{transition:background var(--dur-fast) var(--ease)}tbody tr:hover{background:#4f8cff0f}tbody tr:last-child td{border-bottom:none}.badge{padding:3px 9px;border-radius:var(--radius-pill);font-size:12px;font-weight:700;letter-spacing:.01em}.badge.buy,.badge.accumulate,.badge.ok,.badge.pos{background:#2ee6a824;color:var(--green)}.badge.sell,.badge.avoid,.badge.error,.badge.neg{background:#ff5d6c24;color:var(--red)}.badge.hold{background:#ffb64829;color:var(--amber)}.badge.running,.badge.new{background:#4f8cff29;color:var(--accent-2)}.pos{color:var(--green)}.neg{color:var(--red)}.pill{display:inline-flex;align-items:center;gap:5px;padding:2px 8px;border-radius:var(--radius-pill);font-size:12px;font-weight:700;font-variant-numeric:tabular-nums;background:var(--surface-2);border:1px solid var(--border-soft)}.pill.pos{color:var(--green);background:#2ee6a81f;border-color:#2ee6a840}.pill.neg{color:var(--red);background:#ff5d6c1f;border-color:#ff5d6c40}.idea-card{background:var(--grad-surface),var(--surface);border:1px solid var(--border-soft);border-radius:var(--radius);padding:16px;margin-bottom:12px;box-shadow:var(--shadow-1)}.idea-card header{display:flex;gap:10px;align-items:center;margin-bottom:8px}.idea-card .risks{color:var(--muted);font-size:13px}.idea-card footer{display:flex;gap:8px;margin-top:10px}.idea-card small{display:block;color:var(--muted);margin-top:8px;font-size:11px}.disclaimer{color:var(--muted);font-size:11px;margin-top:16px}.empty{color:var(--muted);padding:44px;text-align:center}.kpi-card{position:relative;overflow:hidden;padding:18px;background:var(--grad-surface),var(--surface);border:1px solid var(--border-soft);border-radius:var(--radius);box-shadow:var(--shadow-2);transition:transform var(--dur) var(--ease),box-shadow var(--dur) var(--ease),border-color var(--dur) var(--ease)}.kpi-card:after{content:"";position:absolute;inset:0 auto auto 0;width:100%;height:3px;background:var(--accent-line, var(--grad-accent));opacity:.85}.kpi-card:hover{transform:translateY(-3px);box-shadow:var(--shadow-3);border-color:#4f8cff4d}.kpi-top{display:flex;align-items:center;justify-content:space-between;gap:10px}.kpi-label{font-size:12px;color:var(--muted);font-weight:700;text-transform:uppercase;letter-spacing:.05em}.kpi-icon{width:34px;height:34px;border-radius:10px;display:grid;place-items:center;background:#4f8cff24;color:var(--accent-2)}.kpi-value{font-size:30px;font-weight:800;letter-spacing:-.03em;font-variant-numeric:tabular-nums;margin:10px 0 6px;line-height:1.05}.kpi-foot{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:18px}.kpi-note{font-size:12px;color:var(--muted)}.skeleton{position:relative;overflow:hidden;color:transparent!important;background:var(--surface-2);border-radius:var(--radius-sm)}.skeleton:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;transform:translate(-100%);background:linear-gradient(90deg,transparent,rgba(255,255,255,.07),transparent);animation:shimmer 1.4s var(--ease-in-out) infinite}@keyframes shimmer{to{transform:translate(100%)}}.login-wrap{display:grid;place-items:center;min-height:100vh;padding:24px}.login-card{width:380px;background:var(--grad-surface),var(--surface);border:1px solid var(--border-soft);border-radius:var(--radius-lg);padding:28px;box-shadow:var(--shadow-pop);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.login-card .brand{text-align:center}.field{margin-bottom:14px}.field label{display:block;font-size:13px;color:var(--muted);margin-bottom:6px;font-weight:600}.err{color:var(--red);font-size:13px;margin-top:8px}.toasts{position:fixed;bottom:20px;right:20px;display:flex;flex-direction:column;gap:10px;z-index:1000}.toast{padding:13px 16px;border-radius:var(--radius-sm);border:1px solid var(--border-soft);background:#1a2440e6;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);box-shadow:var(--shadow-3);min-width:240px;font-size:14px}.toast.error{border-color:var(--red);box-shadow:var(--glow-red)}.toast.success{border-color:var(--green);box-shadow:var(--glow-green)}.chat{display:flex;flex-direction:column;height:calc(100vh - 168px)}.chat-log{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:12px;padding:4px}.msg{max-width:70%;padding:11px 15px;border-radius:16px}.msg.user{align-self:flex-end;background:var(--grad-accent);color:#04102a;font-weight:500}.msg.assistant{align-self:flex-start;background:var(--surface-2);border:1px solid var(--border-soft)}.chat-input{display:flex;gap:8px;margin-top:12px}.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.toolbar{display:flex;gap:10px;margin-bottom:16px;align-items:center;flex-wrap:wrap}*{scrollbar-width:thin;scrollbar-color:var(--surface-3) transparent}*::-webkit-scrollbar{width:10px;height:10px}*::-webkit-scrollbar-thumb{background:var(--surface-3);border-radius:999px;border:2px solid transparent;background-clip:content-box}*::-webkit-scrollbar-thumb:hover{background:#33427a;background-clip:content-box}.fade-enter-active,.fade-leave-active{transition:opacity var(--dur) var(--ease),transform var(--dur) var(--ease)}.fade-enter-from{opacity:0;transform:translateY(8px)}.fade-leave-to{opacity:0;transform:translateY(-6px)}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}}@media (max-width: 900px){.shell{grid-template-columns:1fr}.sidebar{position:static;height:auto}.content{padding:18px}}
