:root{--brand-50:#f4f1ff;--brand-100:#ebe4ff;--brand-200:#d6caff;--brand-300:#b8a3ff;--brand-400:#9777ff;--brand-500:#7c4dff;--brand-600:#6d28d9;--brand-700:#5b21b6;--brand-800:#4c1d95;--brand-900:#2e1065;--mint:#10b981;--mint-2:#34d399;--coral:#f43f5e;--amber:#f59e0b;--sky:#0ea5e9;--ink-900:#0b1020;--ink-800:#111933;--ink-700:#1a2348;--surface:#fff;--surface-2:#fafaff;--border:#ecebf5;--border-2:#e3e1f0;--radius-lg:18px;--radius-md:12px;--radius-sm:8px;--shadow-card:0 1px 0 #0f172a0a, 0 8px 24px -10px #4c1d951f}*{box-sizing:border-box}html,body{height:100%}body{color:#0f172a;letter-spacing:-.005em;margin:0}.bg-app{background:radial-gradient(1100px 600px at -10% -20%,#7c4dff1a,#0000 60%),radial-gradient(800px 500px at 110% 10%,#10b98114,#0000 60%),linear-gradient(#fbfaff 0%,#f4f3fb 100%)}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:linear-gradient(#d6caff,#b8a3ff) padding-box padding-box;border:2px solid #0000;border-radius:999px}::-webkit-scrollbar-thumb:hover{background:#9777ff padding-box padding-box}.sidebar{color:#e7e5ff;background:radial-gradient(600px 300px at 0 0,#7c4dff59,#0000 60%),linear-gradient(#0c1130 0%,#0b1020 60%,#0a0f1f 100%);border-right:1px solid #ffffff0a;flex-shrink:0;width:264px;height:100vh;padding:22px 16px;position:sticky;top:0;overflow-y:auto}.sidebar .brand{border-bottom:1px solid #ffffff0f;align-items:center;gap:12px;margin-bottom:14px;padding:6px 10px 18px;display:flex}.sidebar .brand .logo{color:#fff;background:linear-gradient(135deg,#7c4dff 0%,#34d399 100%);border-radius:12px;place-items:center;width:40px;height:40px;font-weight:800;display:grid;box-shadow:0 10px 20px -10px #7c4dffb3}.sidebar .brand h1{letter-spacing:-.02em;color:#fff;margin:0;font-family:Plus Jakarta Sans,sans-serif;font-size:16px;font-weight:800}.sidebar .brand p{color:#9aa3c7;letter-spacing:.02em;margin:0;font-size:11px}.nav-section-title{letter-spacing:.18em;text-transform:uppercase;color:#6b73a3;padding:14px 14px 8px;font-size:10px;font-weight:700}.nav-link{color:#c8cae6;cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:12px;align-items:center;gap:12px;padding:10px 12px;font-size:14px;font-weight:500;transition:background .25s,color .25s,transform .25s;display:flex;position:relative}.nav-link svg{opacity:.85;width:18px;height:18px}.nav-link .badge{color:#d6caff;background:#7c4dff2e;border-radius:999px;margin-left:auto;padding:2px 7px;font-size:10px;font-weight:700}.nav-link:hover{color:#fff;background:#ffffff0a;transform:translate(2px)}.nav-link.active{color:#fff;background:linear-gradient(90deg,#7c4dff40,#7c4dff0d);box-shadow:inset 0 0 0 1px #7c4dff40}.nav-link.active:before{content:"";background:linear-gradient(#7c4dff,#34d399);border-radius:4px;width:4px;position:absolute;top:8px;bottom:8px;left:-4px;box-shadow:0 0 14px #7c4dffa6}.nav-link.active svg{opacity:1;color:#b8a3ff}.sidebar-footer{background:linear-gradient(135deg,#7c4dff33,#10b9811a);border:1px solid #7c4dff40;border-radius:16px;margin-top:24px;padding:14px}.sidebar-footer h4{color:#fff;margin:0 0 4px;font-size:13px;font-weight:700}.sidebar-footer p{color:#c8cae6;margin:0 0 10px;font-size:11px;line-height:1.5}.sidebar-footer button{color:#fff;cursor:pointer;background:linear-gradient(135deg,#7c4dff,#6d28d9);border:0;border-radius:10px;width:100%;padding:8px 10px;font-size:12px;font-weight:700;transition:transform .2s,box-shadow .2s}.sidebar-footer button:hover{transform:translateY(-1px);box-shadow:0 10px 20px -10px #7c4dffb3}#app.login-mode #sidebar,#app.login-mode #topbar{display:none!important}#app.login-mode #view{padding:0!important}.login-shell{place-items:center;min-height:100vh;padding:24px;display:grid}.login-card{background:var(--surface);border:1px solid var(--border);width:100%;max-width:460px;box-shadow:var(--shadow-card);border-radius:20px;padding:28px}.login-brand{align-items:center;gap:12px;margin-bottom:20px;display:flex}.login-brand .logo{color:#fff;background:linear-gradient(135deg,#7c4dff 0%,#34d399 100%);border-radius:12px;place-items:center;width:44px;height:44px;font-weight:800;display:grid;box-shadow:0 10px 20px -10px #7c4dffb3}.login-brand h1{letter-spacing:-.02em;color:#0f172a;margin:0;font-size:18px;font-weight:800}.login-brand p{color:#64748b;margin:0;font-size:12px}.login-hint{color:#64748b;align-items:center;gap:8px;margin-top:14px;display:flex}.login-hint small{font-size:12px}.topbar{z-index:30;-webkit-backdrop-filter:saturate(160%)blur(14px);background:#ffffffbf;border-bottom:1px solid #0f172a0f;align-items:center;gap:16px;padding:14px 24px;display:flex;position:sticky;top:0}.search{flex:1;max-width:520px;position:relative}.search input{border:1px solid var(--border);background:#fff;border-radius:12px;outline:none;width:100%;height:40px;padding:0 14px 0 40px;font-size:14px;transition:border-color .2s,box-shadow .2s}.search input:focus{border-color:var(--brand-400);box-shadow:0 0 0 4px #7c4dff1f}.search svg{color:#94a3b8;width:18px;height:18px;position:absolute;top:50%;left:12px;transform:translateY(-50%)}.search kbd{color:#6b73a3;background:#f1f0fa;border:1px solid #e3e1f0;border-radius:6px;padding:2px 6px;font-family:JetBrains Mono,monospace;font-size:11px;position:absolute;top:50%;right:10px;transform:translateY(-50%)}.icon-btn{border:1px solid var(--border);color:#475569;cursor:pointer;background:#fff;border-radius:12px;place-items:center;width:40px;height:40px;transition:all .2s;display:grid;position:relative}.icon-btn:hover{color:var(--brand-600);border-color:var(--brand-200);transform:translateY(-1px)}.icon-btn .dot{background:linear-gradient(135deg, var(--coral), #fb7185);border-radius:999px;width:8px;height:8px;position:absolute;top:8px;right:9px;box-shadow:0 0 0 2px #fff}.user-chip{border:1px solid var(--border);cursor:pointer;background:#fff;border-radius:999px;align-items:center;gap:10px;padding:4px 12px 4px 4px;transition:all .2s;display:flex}.user-chip:hover{border-color:var(--brand-300)}.user-chip .avatar{color:#fff;background:linear-gradient(135deg,#7c4dff,#34d399);border-radius:999px;place-items:center;width:32px;height:32px;font-size:13px;font-weight:700;display:grid}.user-chip .meta strong{color:#0f172a;font-size:12.5px;line-height:1.2;display:block}.user-chip .meta span{color:#64748b;font-size:10.5px;display:block}.page-title h2{letter-spacing:-.025em;color:#0f172a;margin:0;font-family:Plus Jakarta Sans,sans-serif;font-size:26px;font-weight:800}.page-title p{color:#64748b;margin:4px 0 0;font-size:14px}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-card)}.card-pad{padding:22px}.btn{cursor:pointer;border:1px solid #0000;border-radius:12px;align-items:center;gap:8px;padding:10px 16px;font-size:14px;font-weight:600;transition:all .2s;display:inline-flex}.btn svg{width:16px;height:16px}.btn-primary{color:#fff;background:linear-gradient(135deg,#7c4dff 0%,#6d28d9 100%);box-shadow:0 10px 24px -10px #7c4dff99}.btn-primary:hover{transform:translateY(-1px);box-shadow:0 14px 28px -10px #7c4dffb3}.btn-ghost{color:#475569;border-color:var(--border);background:#fff}.btn-ghost:hover{color:var(--brand-700);border-color:var(--brand-200);background:var(--brand-50)}.btn-soft{background:var(--brand-50);color:var(--brand-700);border-color:var(--brand-100)}.btn-soft:hover{background:var(--brand-100)}.kpi{border-radius:var(--radius-lg);border:1px solid var(--border);background:#fff;padding:20px;transition:transform .25s,box-shadow .25s,border-color .25s;position:relative;overflow:hidden}.kpi:hover{border-color:var(--brand-100);transform:translateY(-3px);box-shadow:0 18px 38px -18px #4c1d9540}.kpi:before{content:"";background:radial-gradient(circle, var(--accent,#7c4dff2e), transparent 60%);opacity:.8;pointer-events:none;width:180px;height:180px;position:absolute;inset:-50% -50% auto auto}.kpi .kpi-icon{background:var(--accent-bg,linear-gradient(135deg, #ede9fe, #ddd6fe));width:44px;height:44px;color:var(--accent-fg,#6d28d9);border-radius:12px;place-items:center;margin-bottom:14px;display:grid}.kpi .kpi-label{color:#64748b;letter-spacing:.02em;text-transform:uppercase;font-size:12.5px;font-weight:600}.kpi .kpi-value{color:#0f172a;letter-spacing:-.02em;margin-top:4px;font-family:Plus Jakarta Sans,sans-serif;font-size:28px;font-weight:800}.kpi .kpi-trend{border-radius:999px;align-items:center;gap:4px;margin-top:10px;padding:4px 8px;font-size:12px;font-weight:700;display:inline-flex}.kpi .kpi-trend.up{color:#047857;background:#d1fae5}.kpi .kpi-trend.down{color:#be123c;background:#ffe4e6}.badge{letter-spacing:.01em;border-radius:999px;align-items:center;gap:6px;padding:4px 10px;font-size:11.5px;font-weight:700;display:inline-flex}.badge:before{content:"";opacity:.9;background:currentColor;border-radius:999px;width:6px;height:6px}.badge-success{color:#047857;background:#d1fae5}.badge-warn{color:#92400e;background:#fef3c7}.badge-danger{color:#be123c;background:#ffe4e6}.badge-info{color:#1d4ed8;background:#dbeafe}.badge-brand{color:#5b21b6;background:#ede9fe}.badge-muted{color:#475569;background:#e2e8f0}.table{border-collapse:separate;border-spacing:0;width:100%;font-size:13.5px}.table thead th{text-align:left;letter-spacing:.08em;text-transform:uppercase;color:#64748b;border-bottom:1px solid var(--border);background:#faf9ff;padding:12px 16px;font-size:11px;font-weight:700}.table thead th:first-child{border-top-left-radius:12px}.table thead th:last-child{border-top-right-radius:12px}.table tbody td{border-bottom:1px solid var(--border);vertical-align:middle;padding:14px 16px}.table tbody tr{transition:background .2s}.table tbody tr:hover{background:#fbfaff}.table tbody tr:last-child td{border-bottom:0}.avatar-circle{color:#fff;letter-spacing:.02em;border-radius:999px;flex-shrink:0;place-items:center;width:36px;height:36px;font-size:12.5px;font-weight:700;display:grid}.tabs{border:1px solid var(--border);scrollbar-width:none;background:#f4f3fb;border-radius:14px;gap:4px;padding:5px;display:flex;overflow-x:auto}.tabs::-webkit-scrollbar{display:none}.tab{color:#64748b;cursor:pointer;white-space:nowrap;background:0 0;border:0;border-radius:10px;align-items:center;gap:8px;padding:9px 14px;font-size:13px;font-weight:600;transition:all .25s;display:inline-flex}.tab svg{width:15px;height:15px}.tab:hover{color:var(--brand-700);background:#fff9}.tab.active{color:var(--brand-700);box-shadow:0 4px 12px -6px #4c1d9540, 0 0 0 1px var(--border);background:#fff}.field{flex-direction:column;gap:6px;display:flex}.field label{color:#64748b;letter-spacing:.02em;text-transform:uppercase;font-size:11.5px;font-weight:600}.field .input,.field input,.field select,.field textarea{border:1px solid var(--border);color:#0f172a;background:#fbfaff;border-radius:10px;width:100%;padding:10px 12px;font-family:inherit;font-size:14px;transition:border-color .2s,box-shadow .2s,background .2s}.field .input:focus,.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--brand-400);background:#fff;outline:none;box-shadow:0 0 0 4px #7c4dff1a}.field .input.readonly,.field input.readonly{color:#475569;background:#f1f0fa;font-family:JetBrains Mono,monospace}.field .hint{color:#94a3b8;font-size:11px}.field.required .input,.field.required input,.field.required select{background:#ecfdf5;border-color:#a7f3d0}.field.required .input:focus,.field.required input:focus{border-color:var(--mint);box-shadow:0 0 0 4px #10b98126}@keyframes fadeUp{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.view-fade>*{animation:.35s both fadeUp}.view-fade>:first-child{animation-delay:20ms}.view-fade>:nth-child(2){animation-delay:60ms}.view-fade>:nth-child(3){animation-delay:.1s}.view-fade>:nth-child(4){animation-delay:.14s}.view-fade>:nth-child(5){animation-delay:.18s}@keyframes pulseSoft{0%,to{opacity:1}50%{opacity:.55}}.pulse{animation:1.8s ease-in-out infinite pulseSoft}.toast{border:1px solid var(--border);background:#fff;border-radius:14px;align-items:center;gap:12px;min-width:280px;padding:12px 16px 12px 14px;animation:.35s both fadeUp;display:flex;box-shadow:0 24px 48px -20px #0f172a4d}.toast .ic{color:#047857;background:#d1fae5;border-radius:10px;place-items:center;width:32px;height:32px;display:grid}.toast strong{color:#0f172a;font-size:13px;display:block}.toast span{color:#64748b;font-size:12px}.modal-backdrop{z-index:90;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#0f172a73;place-items:center;animation:.2s both fadeUp;display:grid;position:fixed;inset:0}.modal{background:#fff;border-radius:18px;width:min(560px,92vw);padding:24px;animation:.25s both fadeUp;box-shadow:0 30px 60px -20px #0f172a66}.list-row{border:1px solid var(--border);background:#fff;border-radius:14px;grid-template-columns:1fr auto;align-items:center;gap:12px;padding:14px 16px;transition:all .2s;display:grid}.list-row:hover{border-color:var(--brand-200);box-shadow:var(--shadow-card);transform:translateY(-1px)}.chip{border:1px solid var(--border);color:#475569;cursor:pointer;background:#f4f3fb;border-radius:999px;align-items:center;gap:6px;padding:6px 10px;font-size:12px;font-weight:600;transition:all .2s;display:inline-flex}.chip:hover{color:var(--brand-700);border-color:var(--brand-200);background:var(--brand-50)}.chip svg{width:14px;height:14px}.deco-stripe{position:relative}.deco-stripe:before{content:"";opacity:.9;background:linear-gradient(#34d399 0%,#7c4dff 100%);border-radius:4px;width:4px;position:absolute;top:0;bottom:0;left:0}.switch{cursor:pointer;background:#e2e8f0;border-radius:999px;width:38px;height:22px;transition:background .25s;position:relative}.switch:after{content:"";background:#fff;border-radius:999px;width:18px;height:18px;transition:transform .25s;position:absolute;top:2px;left:2px;box-shadow:0 2px 4px #00000026}.switch.on{background:linear-gradient(135deg,#7c4dff,#6d28d9)}.switch.on:after{transform:translate(16px)}.divider{background:var(--border);width:100%;height:1px}.dot-sep{background:#cbd5e1;border-radius:999px;width:4px;height:4px;display:inline-block}.apexcharts-tooltip{border:1px solid var(--border)!important;border-radius:12px!important;box-shadow:0 14px 30px -10px #0f172a40!important}.apexcharts-tooltip-title{border-bottom:1px solid var(--border)!important;background:#faf9ff!important;font-weight:700!important}@media (width<=980px){.sidebar{display:none}}
