:root{--bg:#0a0a0f;--surface-1:#111118;--surface-2:#18181f;--surface-3:#22222d;--surface-hover:#1c1c26;--border:#ffffff12;--border-strong:#ffffff1f;--fg:#f1f0f9;--muted:#9896b0;--subtle:#87859d;--accent:#6366f1;--accent-2:#8b5cf6;--accent-glow:0 6px 20px #6366f159;--success:#22c55e;--warning:#f59e0b;--danger:#ef4444;--on-accent:#fff;--font:"Inter", system-ui, -apple-system, "Segoe UI", sans-serif;--radius:12px;--radius-sm:8px;--shadow:0 10px 30px #00000059;--sidebar-w:240px;--sidebar-w-min:76px}html[data-theme=light]{--bg:#f0f0f5;--surface-1:#fff;--surface-2:#f5f5f9;--surface-3:#e9e9f2;--surface-hover:#efeef6;--border:#14142d1a;--border-strong:#14142d2e;--fg:#16162a;--muted:#5c5c72;--subtle:#8d8ca3;--accent:#5757e8;--accent-2:#7c3aed;--on-accent:#fff;--shadow:0 10px 28px #1e1e501f;--accent-glow:0 6px 18px #6366f140}*{box-sizing:border-box;margin:0;padding:0}html,body{height:100%}body{font-family:var(--font);color:var(--fg);background:var(--bg);-webkit-font-smoothing:antialiased;font-size:14px;line-height:1.5;transition:background .2s,color .2s}button{font-family:inherit;font-size:inherit;color:inherit;cursor:pointer;background:0 0;border:none}input,select,textarea{font-family:inherit;font-size:inherit;color:inherit}input::placeholder,textarea::placeholder{color:var(--subtle)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:var(--surface-3);border-radius:6px}::-webkit-scrollbar-track{background:0 0}a{color:inherit;text-decoration:none}.app{min-height:100vh;display:flex}.sidebar{width:var(--sidebar-w);background:var(--surface-1);border-right:1px solid var(--border);z-index:60;flex-direction:column;flex-shrink:0;height:100vh;transition:width .3s,transform .3s;display:flex;position:sticky;top:0}.logo{align-items:center;gap:12px;padding:22px 20px;display:flex}.logo-mark{background:linear-gradient(135deg, var(--accent), var(--accent-2));color:#fff;width:38px;height:38px;box-shadow:var(--accent-glow);border-radius:11px;flex-shrink:0;place-items:center;font-size:16px;font-weight:800;display:grid}.logo-text b{letter-spacing:-.01em;font-size:15px;font-weight:700;display:block}.logo-text span{color:var(--muted);font-size:11.5px}.nav{flex-direction:column;flex:1;gap:4px;padding:10px 12px;display:flex;overflow-y:auto}.nav-item{color:var(--muted);white-space:nowrap;text-align:left;border-radius:10px;align-items:center;gap:12px;width:100%;padding:11px 12px;font-size:13.5px;font-weight:600;transition:background .15s,color .15s;display:flex;overflow:hidden}.nav-item svg{stroke-width:2px;flex-shrink:0;width:19px;height:19px}.nav-item:hover{background:var(--surface-2);color:var(--fg)}.nav-item.active{color:var(--fg);background:linear-gradient(135deg,#6366f129,#8b5cf624)}.nav-item.active svg{stroke:var(--accent)}.nav-item .lbl{text-overflow:ellipsis;overflow:hidden}.sidebar-foot{border-top:1px solid var(--border);flex-direction:column;gap:4px;padding:14px;display:flex}.sidebar-foot .nav-item{margin-bottom:0}.theme-toggle{cursor:pointer;width:100%;color:var(--muted);background:0 0;border:none;border-radius:10px;align-items:center;gap:12px;padding:10px 12px;font-size:13.5px;font-weight:600;transition:background .15s,color .15s;display:flex}.theme-toggle:hover{background:var(--surface-2);color:var(--fg)}.theme-toggle svg{stroke-width:2px;flex-shrink:0;width:19px;height:19px}.app.collapsed .sidebar{width:var(--sidebar-w-min)}.app.collapsed .logo-text,.app.collapsed .nav-item .lbl,.app.collapsed .theme-toggle .lbl,.app.collapsed .sidebar-foot .lbl{display:none}.app.collapsed .logo{justify-content:center;padding:22px 0}.app.collapsed .nav-item{justify-content:center;padding:11px 0}.app.collapsed .theme-toggle{justify-content:center;padding:10px 0}.collapse-btn{background:var(--surface-2);border:1px solid var(--border-strong);width:26px;height:26px;color:var(--muted);box-shadow:var(--shadow);z-index:5;border-radius:50%;place-items:center;display:grid;position:absolute;top:24px;right:-13px}.collapse-btn svg{width:14px;height:14px}.main{flex-direction:column;flex:1;min-width:0;display:flex}.topbar{z-index:40;background:color-mix(in srgb, var(--bg) 82%, transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--border);align-items:center;gap:14px;height:64px;padding:0 28px;display:flex;position:sticky;top:0}.topbar h1{letter-spacing:-.01em;font-size:15px;font-weight:700}.burger{width:40px;height:40px;color:var(--muted);border-radius:10px;place-items:center;display:none}.burger svg{width:20px;height:20px}.topbar-date{color:var(--muted);letter-spacing:.02em;text-transform:capitalize;margin-left:auto;font-size:12px}.content{flex:1;width:100%;max-width:1200px;margin:0 auto;padding:26px 28px 60px}.page-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:22px;display:flex}.page-head h2{letter-spacing:-.02em;font-size:24px;font-weight:800;line-height:1.15}.page-head .sub{color:var(--muted);margin-top:5px;font-size:13px}.eyebrow{letter-spacing:.09em;text-transform:uppercase;color:var(--accent);margin-bottom:8px;font-size:11px;font-weight:700}.btn{letter-spacing:.01em;white-space:nowrap;border-radius:9px;justify-content:center;align-items:center;gap:8px;height:44px;padding:0 18px;font-size:13.5px;font-weight:600;transition:transform .15s,box-shadow .15s,filter .15s,background .15s;display:inline-flex}.btn svg{width:17px;height:17px}.btn:active{transform:translateY(1px)}.btn-primary{background:linear-gradient(135deg, var(--accent), var(--accent-2));color:var(--on-accent);box-shadow:var(--accent-glow)}.btn-primary:hover{filter:brightness(1.08)}.btn-ghost{background:var(--surface-2);border:1px solid var(--border-strong);color:var(--fg)}.btn-ghost:hover{background:var(--surface-3)}.btn-danger-ghost{background:var(--surface-2);border:1px solid var(--border-strong);color:var(--danger)}.btn-danger-ghost:hover{background:#ef44441a;border-color:#ef44444d}.btn-sm{border-radius:8px;height:32px;padding:0 12px;font-size:12px}.btn:disabled{opacity:.5;pointer-events:none}.card{background:var(--surface-1);border:1px solid var(--border);border-radius:var(--radius);padding:20px;transition:transform .15s,box-shadow .15s}.card-hover:hover{box-shadow:var(--shadow);transform:translateY(-2px)}.card h3{letter-spacing:-.01em;margin-bottom:14px;font-size:13px;font-weight:700}.card-narrow{max-width:640px}.kpi-grid{grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:22px;display:grid}.kpi{padding:18px 20px}.kpi .k-label{text-transform:uppercase;letter-spacing:.07em;color:var(--muted);font-size:12px;font-weight:700}.kpi .k-value{letter-spacing:-.03em;font-variant-numeric:tabular-nums;margin-top:10px;font-size:27px;font-weight:800}.kpi .k-note{color:var(--muted);margin-top:7px;font-size:12px}.chart-card{padding:20px}.chart-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px;display:flex}.chart-head h3{margin:0}.legend{color:var(--muted);flex-wrap:wrap;gap:16px;font-size:12px;display:flex}.legend i{vertical-align:-1px;border-radius:3px;width:10px;height:10px;margin-right:6px;display:inline-block}.chart-wrap{width:100%;position:relative}.chart-wrap svg{width:100%;height:auto;display:block}.table-wrap{border:1px solid var(--border);border-radius:var(--radius);overflow:auto}table{border-collapse:collapse;width:100%;min-width:680px;font-size:13.5px}thead th{background:var(--surface-2);text-transform:uppercase;letter-spacing:.08em;color:var(--muted);text-align:left;border-bottom:1px solid var(--border);white-space:nowrap;padding:13px 16px;font-size:11px;font-weight:700;position:sticky;top:0}tbody td{border-bottom:1px solid var(--border);vertical-align:middle;white-space:nowrap;padding:14px 16px}tbody tr:last-child td{border-bottom:none}tbody tr{transition:background .15s}tbody tr:hover{background:var(--surface-hover)}tfoot td{border-top:1px solid var(--border-strong);white-space:nowrap;padding:14px 16px;font-weight:600}tfoot tr{background:var(--surface-2)}.tnum{font-variant-numeric:tabular-nums}.row-actions{justify-content:flex-end;gap:6px;display:flex}.icon-btn{width:36px;height:36px;color:var(--muted);border-radius:8px;place-items:center;transition:background .15s,color .15s;display:grid}.icon-btn svg{width:15px;height:15px}.icon-btn:hover{background:var(--surface-3);color:var(--fg)}.icon-btn.danger:hover{color:var(--danger);background:#ef44441f}.fund-dot{vertical-align:1px;border-radius:50%;width:9px;height:9px;margin-right:8px;display:inline-block}.pill{border-radius:999px;align-items:center;gap:6px;padding:3px 10px;font-size:11.5px;font-weight:700;display:inline-flex}.pill.positive{color:var(--success);background:#22c55e1f}.pill.negative{color:var(--danger);background:#ef44441f}.pill.neutral{background:var(--surface-2);color:var(--muted)}.field{margin-bottom:16px}.field label{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin-bottom:7px;font-size:12px;font-weight:700;display:block}.input{background:var(--surface-2);border:1px solid var(--border-strong);border-radius:var(--radius-sm);width:100%;height:40px;padding:0 13px;font-size:14px;transition:border-color .15s,box-shadow .15s}.input:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px #6366f12e}.form-row{grid-template-columns:1fr 1fr;gap:14px;display:grid}.form-row-3{grid-template-columns:1fr 1fr 1fr;gap:14px;display:grid}.form-hint{color:var(--muted);margin:-4px 0 16px;font-size:13px}.sel{width:100%;position:relative}.sel-inline{width:auto;display:inline-block}.sel-inline .sel-trigger{width:auto;min-width:170px}.sel-inline .sel-pop{left:auto;right:0}.sel-trigger{background:var(--surface-2);border:1px solid var(--border-strong);border-radius:var(--radius-sm);width:100%;height:40px;color:var(--fg);text-align:left;cursor:pointer;justify-content:space-between;align-items:center;gap:10px;padding:0 12px;font-size:14px;transition:border-color .15s,box-shadow .15s;display:flex}.sel-trigger svg{width:16px;height:16px;color:var(--muted);flex-shrink:0;transition:transform .2s}.sel-lbl{align-items:center;gap:8px;min-width:0;display:inline-flex;overflow:hidden}.sel-lbl .sv{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.sel.open .sel-trigger{border-color:var(--accent);box-shadow:0 0 0 3px #6366f12e}.sel.open .sel-trigger svg{transform:rotate(180deg)}.sel-pop{z-index:60;background:var(--surface-1);border:1px solid var(--border-strong);min-width:100%;max-width:320px;box-shadow:var(--shadow);border-radius:12px;max-height:280px;padding:6px;display:none;position:absolute;top:calc(100% + 6px);left:0;overflow:auto}.sel.open .sel-pop{display:block}.sel-opt{width:100%;color:var(--fg);text-align:left;cursor:pointer;border-radius:8px;align-items:center;gap:8px;padding:9px 12px;font-size:13.5px;transition:background .15s;display:flex}.sel-opt .sv{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.sel-opt:hover{background:var(--surface-2)}.sel-opt.active{background:linear-gradient(135deg,#6366f129,#8b5cf624);font-weight:600}.sel-opt .dot{border-radius:50%;flex-shrink:0;width:9px;height:9px}.sel-opt .check{color:var(--accent);flex-shrink:0;margin-left:auto;display:none}.sel-opt .check svg{width:14px;height:14px}.sel-opt.active .check{display:inline-block}.sel-search{border-bottom:1px solid var(--border);margin-bottom:4px;padding:6px 8px}.sel-search input{background:var(--surface-2);border:1px solid var(--border-strong);border-radius:7px;width:100%;height:34px;padding:0 10px;font-size:13px}.sel-search input:focus{border-color:var(--accent);outline:none}.sel-empty{text-align:center;color:var(--muted);padding:12px;font-size:13px}.dp{width:100%;position:relative}.dp-trigger{background:var(--surface-2);border:1px solid var(--border-strong);border-radius:var(--radius-sm);width:100%;height:40px;color:var(--fg);text-align:left;cursor:pointer;justify-content:space-between;align-items:center;gap:10px;padding:0 12px;font-size:14px;display:flex}.dp-trigger svg{width:16px;height:16px;color:var(--muted);flex-shrink:0}.dp.open .dp-trigger{border-color:var(--accent);box-shadow:0 0 0 3px #6366f12e}.dp-pop{z-index:60;background:var(--surface-1);border:1px solid var(--border-strong);min-width:272px;max-width:calc(100vw - 32px);box-shadow:var(--shadow);border-radius:12px;padding:14px;display:none;position:absolute;top:calc(100% + 6px);left:0}.dp.open .dp-pop{display:block}.dp-head{justify-content:space-between;align-items:center;margin-bottom:10px;display:flex}.dp-title{letter-spacing:-.01em;text-transform:capitalize;font-size:13.5px;font-weight:700}.dp-nav{width:30px;height:30px;color:var(--muted);border-radius:8px;place-items:center;transition:background .15s;display:grid}.dp-nav:hover{background:var(--surface-2);color:var(--fg)}.dp-nav svg{width:15px;height:15px}.dp-week{grid-template-columns:repeat(7,1fr);gap:2px;margin-bottom:6px;display:grid}.dp-week span{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);text-align:center;font-size:10.5px;font-weight:700}.dp-grid{grid-template-columns:repeat(7,1fr);gap:2px;display:grid}.dp-day{height:32px;color:var(--fg);cursor:pointer;border-radius:8px;place-items:center;font-size:13px;transition:background .15s,color .15s;display:grid}.dp-day:hover{background:var(--surface-2)}.dp-day.out{color:var(--subtle)}.dp-day.today:not(.out):not(.sel){box-shadow:inset 0 0 0 1px var(--accent)}.dp-day.sel{background:linear-gradient(135deg, var(--accent), var(--accent-2));color:#fff;font-weight:700}.dp-foot{border-top:1px solid var(--border);justify-content:flex-end;margin-top:10px;padding-top:10px;display:flex}.dp-today{color:var(--accent);letter-spacing:.02em;cursor:pointer;border-radius:6px;padding:4px 6px;font-size:12px;font-weight:700}.dp-today:hover{background:var(--surface-2);color:var(--accent-2)}.switch-row{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:16px;padding:14px 0;display:flex}.switch-row:last-child{border-bottom:none}.switch-row .txt b{font-size:13.5px;font-weight:600;display:block}.switch-row .txt span{color:var(--muted);font-size:12px}.switch{flex-shrink:0;width:44px;height:24px;position:relative}.switch input{opacity:0;width:0;height:0}.switch .track{background:var(--surface-3);border:1px solid var(--border-strong);border-radius:999px;transition:background .2s;position:absolute;inset:0}.switch .track:after{content:"";background:var(--muted);border-radius:50%;width:18px;height:18px;transition:transform .2s,background .2s;position:absolute;top:2px;left:2px}.switch input:checked+.track{background:linear-gradient(135deg, var(--accent), var(--accent-2));border-color:#0000}.switch input:checked+.track:after{background:#fff;transform:translate(20px)}.switch input:focus-visible+.track{outline:2px solid var(--accent);outline-offset:2px}.funds-grid{grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px;display:grid}.fund-card p.body{color:var(--muted);margin:12px 0 16px;font-size:13px}.fund-top{align-items:center;gap:12px;display:flex}.fund-badge{color:#fff;border-radius:12px;flex-shrink:0;place-items:center;width:42px;height:42px;font-size:15px;font-weight:800;display:grid}.fund-top b{letter-spacing:-.01em;font-size:14px;display:block}.fund-top span{color:var(--muted);text-transform:uppercase;letter-spacing:.06em;font-size:11.5px}.fund-stats{grid-template-columns:1fr 1fr;gap:12px;margin-top:14px;display:grid}.fund-stats .fs .fs-v{letter-spacing:-.02em;font-variant-numeric:tabular-nums;font-size:17px;font-weight:700}.fund-stats .fs .fs-l{text-transform:uppercase;letter-spacing:.07em;color:var(--muted);margin-top:3px;font-size:11px;font-weight:700}.mini-chart{height:46px;margin-top:16px}.progress{background:var(--surface-3);border-radius:4px;height:7px;margin-top:16px;overflow:hidden}.progress i{background:linear-gradient(90deg, var(--accent), var(--accent-2));border-radius:4px;height:100%;transition:width .4s cubic-bezier(.3,.7,.4,1);display:block}.modal-overlay{z-index:80;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#05050c99;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.modal{background:var(--surface-1);border:1px solid var(--border-strong);width:100%;max-width:480px;max-height:90vh;box-shadow:var(--shadow);border-radius:16px;padding:26px;animation:.25s slideUp;position:relative;overflow:auto}.modal-sm{max-width:380px}.modal-header{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:5px;display:flex}.modal-header h2{letter-spacing:-.02em;font-size:18px;font-weight:700}.modal-close{width:30px;height:30px;color:var(--muted);border-radius:8px;place-items:center;display:grid}.modal-close:hover{background:var(--surface-2);color:var(--fg)}.modal-close svg{width:18px;height:18px}.modal-body .sub{color:var(--muted);margin-bottom:20px;font-size:13px}.modal-actions{flex-wrap:wrap;justify-content:flex-end;gap:10px;margin-top:22px;display:flex}.swatches{flex-wrap:wrap;gap:10px;display:flex}.swatches label{cursor:pointer}.swatches input{display:none}.swatch{border-radius:10px;width:34px;height:34px;transition:transform .15s,box-shadow .15s;display:inline-block}.swatch.sel{box-shadow:0 0 0 2px var(--bg), 0 0 0 4px var(--accent);transform:scale(1.12)}.toast{z-index:90;flex-direction:column;gap:8px;display:flex;position:fixed;bottom:24px;right:24px}.toast-item{background:var(--surface-1);border:1px solid var(--border-strong);box-shadow:var(--shadow);border-radius:10px;align-items:center;gap:10px;min-width:220px;max-width:360px;padding:12px 18px;font-size:13px;font-weight:600;animation:.25s slideUp;display:flex}.toast-item svg{width:17px;height:17px;color:var(--success);flex-shrink:0}.toast-item.error svg{color:var(--danger)}.login-page{place-items:center;min-height:100vh;padding:24px;display:grid}.login-card{width:100%;max-width:420px}.login-card .logo{justify-content:center;margin-bottom:8px;padding:4px 0 6px}.login-card .logo-text{text-align:center}.login-tabs{background:var(--surface-2);border:1px solid var(--border-strong);border-radius:10px;gap:6px;margin-bottom:20px;padding:4px;display:flex}.login-tabs button{height:36px;color:var(--muted);border-radius:8px;flex:1;font-size:13px;font-weight:600}.login-tabs button.active{background:var(--surface-1);color:var(--fg);box-shadow:var(--shadow)}.login-error{color:var(--danger);background:#ef44441a;border:1px solid #ef44444d;border-radius:8px;margin-bottom:16px;padding:10px 12px;font-size:13px}.spinner{border:3px solid var(--surface-3);border-top-color:var(--accent);border-radius:50%;width:26px;height:26px;margin:40px auto;animation:.7s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}@keyframes slideUp{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}.mt-18{margin-top:18px}.sec-head{justify-content:space-between;align-items:center;margin:30px 0 16px;display:flex}.sec-head h2{font-size:18px}.text-danger{color:var(--danger)}.text-success{color:var(--success)}.empty-state{text-align:center;padding:38px 20px}.empty-state .k-label{margin:0 0 10px}.empty-state p{color:var(--muted);max-width:340px;margin:0 auto 16px;font-size:13px}.center{text-align:center}.demo-bar{background:var(--surface-2);border:1px solid var(--border-strong);color:var(--muted);border-radius:10px;flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:20px;padding:11px 16px;font-size:13px;display:flex}.demo-bar b{color:var(--fg)}.demo-bar button{color:var(--accent);flex-shrink:0;margin-left:auto;font-size:12.5px;font-weight:600}.bottom-nav{display:none}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@media (width<=768px){.sidebar{box-shadow:var(--shadow);position:fixed;top:0;bottom:0;left:0;transform:translate(-105%)}.sidebar.open{transform:none}.main{width:100%}.burger{display:grid}.topbar{padding:0 16px}.content{padding:20px 16px 90px}.kpi-grid{grid-template-columns:1fr 1fr;gap:10px}.kpi .k-value{font-size:22px}.form-row,.form-row-3{grid-template-columns:1fr}.bottom-nav{z-index:55;height:64px;padding-bottom:env(safe-area-inset-bottom);background:color-mix(in srgb, var(--surface-1) 88%, transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-top:1px solid var(--border);display:flex;position:fixed;bottom:0;left:0;right:0}.bottom-nav button{color:var(--muted);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:3px;font-size:10.5px;font-weight:600;display:flex}.bottom-nav svg{stroke-width:2px;width:20px;height:20px}.bottom-nav button.active{color:var(--accent)}.toast{align-items:stretch;bottom:80px;left:16px;right:16px}.page-head h2{font-size:20px}.collapse-btn{display:none}}
