:root{--bg: #07090f;--bg-2: #0a0d16;--panel: rgba(255, 255, 255, .035);--panel-2: rgba(255, 255, 255, .055);--panel-solid: #0e1120;--border: rgba(255, 255, 255, .08);--border-strong: rgba(255, 255, 255, .14);--text: #e6e9f2;--text-2: #b6bccc;--muted: #8b93a7;--faint: #5b6378;--accent: #6366f1;--accent-2: #22d3ee;--grad: linear-gradient(135deg, #6366f1 0%, #818cf8 45%, #22d3ee 100%);--grad-soft: linear-gradient(135deg, rgba(99,102,241,.18), rgba(34,211,238,.12));--success: #34d399;--success-bg: rgba(52, 211, 153, .12);--danger: #f87171;--danger-bg: rgba(248, 113, 113, .12);--warn: #fbbf24;--warn-bg: rgba(251, 191, 36, .12);--blue: #60a5fa;--blue-bg: rgba(96, 165, 250, .12);--gray-bg: rgba(139, 147, 167, .14);--radius: 16px;--radius-sm: 10px;--radius-xs: 8px;--shadow: 0 12px 40px rgba(0, 0, 0, .45);--shadow-sm: 0 4px 16px rgba(0, 0, 0, .32);--sidebar-w: 248px;--topbar-h: 60px;--font: "Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--mono: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--ease: cubic-bezier(.22, .8, .35, 1)}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%}body{font-family:var(--font);font-size:14px;line-height:1.55;color:var(--text);background:radial-gradient(900px 500px at 12% -8%,rgba(99,102,241,.16),transparent 60%),radial-gradient(800px 460px at 92% -4%,rgba(34,211,238,.11),transparent 60%),radial-gradient(700px 600px at 50% 115%,rgba(99,102,241,.07),transparent 60%),var(--bg);background-attachment:fixed;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}a{color:var(--accent-2);text-decoration:none}a:hover{text-decoration:underline}button{font-family:inherit}::selection{background:#6366f173;color:#fff}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#ffffff1f;border-radius:8px;border:2px solid transparent;background-clip:padding-box}::-webkit-scrollbar-thumb:hover{background:#ffffff38;border:2px solid transparent;background-clip:padding-box}*{scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.16) transparent}:focus-visible{outline:2px solid rgba(99,102,241,.8);outline-offset:2px;border-radius:4px}.page-title{font-size:20px;font-weight:700;letter-spacing:-.02em;line-height:1.25}.page-subtitle{color:var(--muted);font-size:13px;margin-top:4px}.mono{font-family:var(--mono);font-size:12.5px}.muted{color:var(--muted)}.small{font-size:12.5px}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.app-shell{display:flex;min-height:100vh}.main-col{flex:1;min-width:0;display:flex;flex-direction:column}.page{flex:1;width:100%;max-width:1180px;margin:0 auto;padding:28px 28px 56px;animation:pageIn .28s var(--ease)}@keyframes pageIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:24px}.page-head-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.sidebar{width:var(--sidebar-w);flex-shrink:0;position:sticky;top:0;height:100vh;display:flex;flex-direction:column;padding:20px 14px 16px;background:#0a0d16b8;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-right:1px solid var(--border);z-index:30}.brand{display:flex;align-items:center;gap:12px;padding:2px 8px 20px}.brand-tile{width:38px;height:38px;border-radius:11px;flex-shrink:0;background:var(--grad);display:grid;place-items:center;font-size:20px;font-weight:800;color:#fff;letter-spacing:-.02em;box-shadow:0 6px 20px #6366f173,inset 0 1px #ffffff59}.brand-name{font-size:16px;font-weight:700;letter-spacing:-.01em;line-height:1.15}.brand-sub{font-size:11px;color:var(--muted);letter-spacing:.04em;text-transform:uppercase;font-weight:600}.nav{display:flex;flex-direction:column;gap:2px}.nav-label{font-size:11px;font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:var(--faint);padding:14px 10px 6px}.nav-item{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:10px;color:var(--text-2);font-size:13.5px;font-weight:500;border:1px solid transparent;transition:background .15s var(--ease),color .15s var(--ease),border-color .15s var(--ease)}.nav-item svg{width:17px;height:17px;flex-shrink:0;opacity:.85}.nav-item:hover{background:#ffffff0d;color:var(--text);text-decoration:none}.nav-item.active{background:var(--grad-soft);color:#fff;border-color:#6366f159;box-shadow:inset 0 1px #ffffff0f}.nav-item.active svg{opacity:1;color:var(--accent-2)}.sidebar-foot{margin-top:auto;padding:12px 10px 2px;border-top:1px solid var(--border);color:var(--faint);font-size:11.5px;line-height:1.5}.topbar{height:var(--topbar-h);position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:0 28px;background:#07090fad;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-bottom:1px solid var(--border)}.topbar-title{font-size:15px;font-weight:650;letter-spacing:-.01em}.topbar-right{display:flex;align-items:center;gap:10px}.chip{display:inline-flex;align-items:center;gap:7px;max-width:320px;padding:5px 11px;border-radius:999px;font-family:var(--mono);font-size:11.5px;color:var(--text-2);background:var(--panel);border:1px solid var(--border)}.chip .dot{width:7px;height:7px;border-radius:50%;background:var(--success);box-shadow:0 0 8px var(--success);flex-shrink:0}.chip span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:8px 16px;border-radius:var(--radius-xs);border:1px solid var(--border);background:var(--panel-2);color:var(--text);font-size:13.5px;font-weight:550;cursor:pointer;white-space:nowrap;-webkit-user-select:none;user-select:none;transition:transform .12s var(--ease),box-shadow .15s var(--ease),background .15s var(--ease),border-color .15s var(--ease),opacity .15s}.btn:hover{background:#ffffff17;border-color:var(--border-strong)}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.5;cursor:not-allowed;transform:none}.btn svg{width:15px;height:15px}.btn-primary{background:var(--grad);border-color:transparent;color:#fff;font-weight:600;box-shadow:0 4px 18px #6366f161,inset 0 1px #ffffff40}.btn-primary:hover{background:var(--grad);filter:brightness(1.1);border-color:transparent;box-shadow:0 6px 22px #6366f180,inset 0 1px #ffffff40}.btn-ghost{background:transparent;border-color:transparent;color:var(--text-2)}.btn-ghost:hover{background:#ffffff0f;border-color:transparent;color:var(--text)}.btn-danger{background:var(--danger-bg);border-color:#f8717159;color:#fca5a5}.btn-danger:hover{background:#f8717133;border-color:#f871718c}.btn-danger-solid{background:#dc2626;border-color:transparent;color:#fff;font-weight:600}.btn-danger-solid:hover{background:#ef4444;border-color:transparent}.btn-sm{padding:5px 11px;font-size:12.5px;border-radius:7px;gap:5px}.btn-sm svg{width:13px;height:13px}.btn-icon{padding:7px}.icon-btn{display:inline-grid;place-items:center;width:30px;height:30px;border-radius:8px;background:transparent;border:1px solid transparent;color:var(--muted);cursor:pointer;transition:background .15s,color .15s,border-color .15s}.icon-btn:hover{background:#ffffff12;color:var(--text);border-color:var(--border)}.icon-btn svg{width:15px;height:15px}.icon-btn.danger:hover{background:var(--danger-bg);color:var(--danger);border-color:#f8717159}.seg{display:inline-flex;padding:3px;gap:2px;background:var(--panel);border:1px solid var(--border);border-radius:10px}.seg button{padding:5px 13px;border:0;border-radius:7px;background:transparent;color:var(--muted);font-size:12.5px;font-weight:550;cursor:pointer;transition:background .15s,color .15s}.seg button:hover{color:var(--text)}.seg button.active{background:#6366f147;color:#fff;box-shadow:inset 0 0 0 1px #6366f173}.field{display:flex;flex-direction:column;gap:6px;margin-bottom:14px}.field label{font-size:12.5px;font-weight:600;color:var(--text-2);letter-spacing:.01em}.field .hint{font-size:12px;color:var(--muted);font-weight:400}.input,.select,.textarea{width:100%;padding:9px 12px;border-radius:var(--radius-xs);background:#ffffff0a;border:1px solid var(--border);color:var(--text);font-size:13.5px;font-family:inherit;line-height:1.45;transition:border-color .15s,box-shadow .15s,background .15s}.input::placeholder,.textarea::placeholder{color:var(--faint)}.input:hover,.select:hover,.textarea:hover{border-color:var(--border-strong)}.input:focus,.select:focus,.textarea:focus{outline:none;border-color:#6366f1bf;box-shadow:0 0 0 3px #6366f138;background:#ffffff0e}.select{-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer;padding-right:32px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%238b93a7' stroke-width='2.4' stroke-linecap='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 11px center}.select option{background:var(--panel-solid);color:var(--text)}.textarea{resize:vertical;min-height:76px}.input.mono,.textarea.mono{font-family:var(--mono);font-size:12.5px}.checkbox-row{display:flex;align-items:center;gap:9px;font-size:13.5px;color:var(--text-2);cursor:pointer;padding:4px 0}.checkbox-row input[type=checkbox]{width:16px;height:16px;accent-color:var(--accent);cursor:pointer}.form-error{padding:10px 13px;border-radius:var(--radius-xs);margin-bottom:14px;background:var(--danger-bg);border:1px solid rgba(248,113,113,.35);color:#fca5a5;font-size:13px;line-height:1.5}.form-ok{padding:10px 13px;border-radius:var(--radius-xs);margin-bottom:14px;background:var(--success-bg);border:1px solid rgba(52,211,153,.35);color:#6ee7b7;font-size:13px;line-height:1.5}.card{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:20px;box-shadow:var(--shadow-sm)}.card+.card{margin-top:16px}.card-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}.card-title{font-size:13px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--muted)}.card-actions{display:flex;align-items:center;gap:8px}.grid-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:16px}.stat-card{position:relative;overflow:hidden;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:18px 20px;box-shadow:var(--shadow-sm);transition:border-color .15s,transform .15s var(--ease)}.stat-card:hover{border-color:var(--border-strong);transform:translateY(-1px)}.stat-card:before{content:"";position:absolute;inset:0 0 auto 0;height:1px;background:linear-gradient(90deg,transparent,rgba(129,140,248,.55),rgba(34,211,238,.45),transparent)}.stat-top{display:flex;align-items:center;justify-content:space-between;gap:8px}.stat-label{font-size:12px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--muted)}.stat-icon{width:30px;height:30px;border-radius:9px;display:grid;place-items:center;flex-shrink:0;background:var(--grad-soft);border:1px solid rgba(99,102,241,.3);color:var(--accent-2)}.stat-icon svg{width:15px;height:15px}.stat-value{font-size:27px;font-weight:750;letter-spacing:-.03em;line-height:1.15;margin-top:8px;font-variant-numeric:tabular-nums}.stat-sub{font-size:12.5px;color:var(--muted);margin-top:3px}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:16px}.grid-2>.card+.card{margin-top:0}.stack{display:flex;flex-direction:column;gap:16px}.stack>.card+.card{margin-top:0}.row{display:flex;align-items:center;gap:10px}.row-wrap{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.spacer{flex:1}.table-wrap{overflow-x:auto;margin:0 -20px;padding:0 20px}.table{width:100%;border-collapse:collapse;font-size:13.5px}.table th{text-align:left;font-size:11.5px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--faint);padding:8px 12px;border-bottom:1px solid var(--border);white-space:nowrap}.table td{padding:11px 12px;border-bottom:1px solid rgba(255,255,255,.045);vertical-align:middle}.table tbody tr{transition:background .12s}.table tbody tr:hover{background:#ffffff08}.table tbody tr:last-child td{border-bottom:0}.table .num{text-align:right;font-variant-numeric:tabular-nums}.table th.num{text-align:right}.pagination{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:16px;flex-wrap:wrap}.pagination-info{font-size:12.5px;color:var(--muted)}.pill{display:inline-flex;align-items:center;gap:5px;padding:2.5px 9px;border-radius:999px;font-size:11.5px;font-weight:600;line-height:1.5;white-space:nowrap;border:1px solid transparent}.pill:before{content:"";width:5.5px;height:5.5px;border-radius:50%;background:currentColor;flex-shrink:0}.pill-green{background:var(--success-bg);color:var(--success);border-color:#34d3994d}.pill-red{background:var(--danger-bg);color:var(--danger);border-color:#f871714d}.pill-amber{background:var(--warn-bg);color:var(--warn);border-color:#fbbf244d}.pill-gray{background:var(--gray-bg);color:var(--text-2);border-color:#8b93a74d}.pill-blue{background:var(--blue-bg);color:var(--blue);border-color:#60a5fa4d}.pill-plain:before{display:none}.bar-list{display:flex;flex-direction:column;gap:12px}.bar-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:4px 14px;align-items:baseline}.bar-label{font-size:13px;color:var(--text-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:var(--mono);font-size:12.5px}.bar-value{font-size:13px;font-weight:650;font-variant-numeric:tabular-nums}.bar-track{grid-column:1 / -1;height:6px;border-radius:99px;background:#ffffff0f;overflow:hidden}.bar-fill{height:100%;border-radius:99px;background:var(--grad);transition:width .5s var(--ease);min-width:2px}.chart-wrap{position:relative}.chart-wrap svg{display:block;width:100%}.chart-axis{display:flex;justify-content:space-between;margin-top:8px;font-size:11px;color:var(--faint);font-variant-numeric:tabular-nums}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;display:grid;place-items:center;padding:20px;background:#030408ad;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);animation:fadeIn .16s var(--ease);overflow-y:auto}.modal{width:100%;max-width:520px;max-height:calc(100vh - 40px);overflow-y:auto;background:#0d1019;border:1px solid var(--border-strong);border-radius:18px;box-shadow:var(--shadow);animation:modalIn .2s var(--ease)}.modal-sm{max-width:420px}.modal-lg{max-width:680px}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes modalIn{0%{opacity:0;transform:translateY(10px) scale(.985)}to{opacity:1;transform:none}}.modal-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:18px 22px 0}.modal-title{font-size:16px;font-weight:700;letter-spacing:-.01em}.modal-body{padding:16px 22px 6px}.modal-foot{display:flex;justify-content:flex-end;gap:8px;padding:14px 22px 20px;flex-wrap:wrap}.toast-stack{position:fixed;right:20px;bottom:20px;z-index:200;display:flex;flex-direction:column;gap:8px;max-width:min(380px,calc(100vw - 40px))}.toast{display:flex;align-items:flex-start;gap:10px;padding:12px 14px;border-radius:12px;background:#10131f;border:1px solid var(--border-strong);box-shadow:var(--shadow);font-size:13.5px;line-height:1.45;cursor:pointer;animation:toastIn .22s var(--ease)}.toast.leaving{opacity:0;transform:translate(12px);transition:opacity .2s,transform .2s}@keyframes toastIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.toast-dot{width:8px;height:8px;border-radius:50%;margin-top:5px;flex-shrink:0}.toast-success .toast-dot{background:var(--success);box-shadow:0 0 8px var(--success)}.toast-error{border-color:#f8717173}.toast-error .toast-dot{background:var(--danger);box-shadow:0 0 8px var(--danger)}.toast-info .toast-dot{background:var(--accent-2);box-shadow:0 0 8px var(--accent-2)}.spinner{width:18px;height:18px;border-radius:50%;flex-shrink:0;border:2px solid rgba(255,255,255,.15);border-top-color:var(--accent-2);animation:spin .7s linear infinite}.spinner-lg{width:30px;height:30px;border-width:3px}@keyframes spin{to{transform:rotate(360deg)}}.center-state{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:56px 20px;color:var(--muted);text-align:center}.skeleton{border-radius:8px;background:linear-gradient(100deg,#ffffff0b 40%,#ffffff1a,#ffffff0b 60%);background-size:200% 100%;animation:shimmer 1.4s infinite}@keyframes shimmer{0%{background-position:120% 0}to{background-position:-80% 0}}.skeleton-line{height:13px;margin-bottom:10px}.skeleton-card{height:108px}.empty{display:flex;flex-direction:column;align-items:center;text-align:center;padding:44px 24px}.empty-icon{width:46px;height:46px;border-radius:14px;display:grid;place-items:center;margin-bottom:14px;background:var(--grad-soft);border:1px solid rgba(99,102,241,.3);color:var(--accent-2)}.empty-icon svg{width:20px;height:20px}.empty-title{font-size:14.5px;font-weight:650}.empty-hint{font-size:13px;color:var(--muted);margin-top:5px;max-width:380px;line-height:1.55}.empty-action{margin-top:16px}.login-wrap{min-height:100vh;display:grid;place-items:center;padding:24px;position:relative;overflow:hidden}.login-wrap:before,.login-wrap:after{content:"";position:absolute;border-radius:50%;filter:blur(90px);pointer-events:none}.login-wrap:before{width:520px;height:520px;background:#6366f147;top:-160px;left:-120px}.login-wrap:after{width:460px;height:460px;background:#22d3ee29;bottom:-180px;right:-100px}.login-card{position:relative;z-index:1;width:100%;max-width:400px;background:#0d101bc7;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);border:1px solid var(--border-strong);border-radius:20px;padding:34px 32px 30px;box-shadow:var(--shadow);animation:modalIn .3s var(--ease)}.login-brand{display:flex;flex-direction:column;align-items:center;text-align:center;margin-bottom:26px}.login-brand .brand-tile{width:52px;height:52px;border-radius:15px;font-size:27px;margin-bottom:14px}.login-title{font-size:20px;font-weight:750;letter-spacing:-.02em}.login-sub{font-size:13px;color:var(--muted);margin-top:5px;line-height:1.55}.login-card .btn{width:100%;padding:10px 16px}@media (max-width: 1020px){.grid-stats{grid-template-columns:repeat(2,1fr)}.grid-2{grid-template-columns:1fr}}@media (max-width: 760px){.sidebar{display:none}.page{padding:20px 16px 44px}.topbar{padding:0 16px}.chip{display:none}.grid-stats{grid-template-columns:1fr}.login-card{padding:28px 22px 24px}}
