:root{--color-brand-50:#fff7e6;--color-brand-100:#ffe9bf;--color-brand-200:#fbd58a;--color-brand-300:#f0b94a;--color-brand-400:#d4a23a;--color-brand-500:#b8861d;--color-brand-600:#946814;--color-ink-900:#0b1220;--color-ink-800:#111827;--color-ink-700:#1f2937;--color-ink-600:#334155;--color-ink-500:#475569;--color-ink-400:#64748b;--color-ink-300:#94a3b8;--color-ink-200:#cbd5e1;--color-ink-100:#e2e8f0;--color-ink-50:#f1f5f9;--color-ink-25:#f8fafc;--color-white:#fff;--color-success:#10b981;--color-success-soft:#10b9811f;--color-warning:#f59e0b;--color-warning-soft:#f59e0b24;--color-danger:#ef4444;--color-danger-soft:#ef44441f;--color-info:#3b82f6;--color-info-soft:#3b82f61f;--color-frozen:#6366f1;--color-frozen-soft:#6366f11f;--color-purple:#8b5cf6;--color-purple-soft:#8b5cf61f;--bg-app:#f4f6fb;--bg-content:#f4f6fb;--bg-card:#fff;--bg-sidebar:#0b1220;--bg-sidebar-2:#111a2e;--bg-topbar:#ffffffdb;--bg-elevated:#fff;--border-soft:#0f172a0f;--border-color:#0f172a1a;--border-strong:#0f172a29;--shadow-sm:0 1px 2px #0f172a0a;--shadow-md:0 4px 12px #0f172a0f, 0 1px 2px #0f172a0a;--shadow-lg:0 18px 40px #0f172a1a, 0 4px 10px #0f172a0d;--shadow-glow:0 0 0 1px #d4a23a2e, 0 8px 24px #d4a23a33;--radius-xs:6px;--radius-sm:8px;--radius-md:10px;--radius-lg:14px;--radius-xl:18px;--radius-2xl:24px;--radius-full:999px;--font-sans:"Plus Jakarta Sans", "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", sans-serif;--font-body:"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", sans-serif;--font-mono:"JetBrains Mono", ui-monospace, SFMono-Regular, "SF Mono", Menlo, monospace;--sidebar-w:260px;--topbar-h:64px;--content-pad:28px;--ease:cubic-bezier(.4, 0, .2, 1);--ease-out:cubic-bezier(.16, 1, .3, 1);--dur-fast:.14s;--dur:.22s;--dur-slow:.42s}*,:before,:after{box-sizing:border-box}html,body,#root{height:100%}body{font-family:var(--font-body);color:var(--color-ink-800);background:var(--bg-app);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility;margin:0;font-size:14px;line-height:1.55}h1,h2,h3,h4,h5{font-family:var(--font-sans);color:var(--color-ink-900);letter-spacing:-.01em;margin:0}a{color:inherit;text-decoration:none}button{font-family:inherit}.tnum,.stat-value,.table td.num,.table th.num,.mono{font-variant-numeric:tabular-nums}.mono{font-family:var(--font-mono)}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:#0f172a2e padding-box padding-box;border:2px solid #0000;border-radius:999px}::-webkit-scrollbar-thumb:hover{background:#0f172a52 padding-box padding-box;border:2px solid #0000}.login-page{background:var(--color-ink-900);min-height:100vh;color:var(--color-white);isolation:isolate;grid-template-columns:1.05fr 1fr;display:grid;position:relative;overflow:hidden}.login-page:before{content:"";z-index:-1;background:radial-gradient(1200px 600px at 0 0,#d4a23a33,#0000 60%),radial-gradient(900px 500px at 100% 100%,#3b82f62e,#0000 60%),linear-gradient(#0b1220 0%,#0a0f1c 100%);position:absolute;inset:0}.login-brand{border-right:1px solid #ffffff0f;flex-direction:column;justify-content:space-between;min-height:100vh;padding:56px 56px 40px;display:flex;position:relative}.login-brand:after{content:"";pointer-events:none;opacity:.55;background-image:linear-gradient(#ffffff0a 1px,#0000 1px),linear-gradient(90deg,#ffffff0a 1px,#0000 1px);background-position:-1px -1px;background-size:48px 48px;position:absolute;inset:0;-webkit-mask-image:radial-gradient(circle at 30% 20%,#000 30%,#0000 75%);mask-image:radial-gradient(circle at 30% 20%,#000 30%,#0000 75%)}.brand-mark{z-index:1;align-items:center;gap:14px;display:flex;position:relative}.brand-mark .brand-logo{color:#0b1220;width:44px;height:44px;font-family:var(--font-sans);letter-spacing:.02em;background:linear-gradient(140deg,#f0b94a 0%,#b8861d 100%);border-radius:12px;place-items:center;font-size:18px;font-weight:800;display:grid;box-shadow:0 10px 30px #d4a23a59,inset 0 0 0 1px #fff3}.brand-mark .brand-text{flex-direction:column;display:flex}.brand-mark .brand-name{font-family:var(--font-sans);color:#fff;letter-spacing:.02em;font-size:17px;font-weight:700}.brand-mark .brand-tag{color:#fff9;letter-spacing:.18em;text-transform:uppercase;font-size:12px}.login-hero{z-index:1;max-width:480px;position:relative}.login-hero .eyebrow{color:#f0b94a;letter-spacing:.1em;text-transform:uppercase;background:#d4a23a1f;border:1px solid #d4a23a4d;border-radius:999px;align-items:center;gap:8px;padding:6px 12px;font-size:12px;font-weight:600;display:inline-flex}.login-hero .eyebrow .dot{width:6px;height:6px;animation:pulse 2s var(--ease) infinite;background:#f0b94a;border-radius:999px;box-shadow:0 0 0 4px #d4a23a2e}@keyframes pulse{0%,to{box-shadow:0 0 0 4px #d4a23a2e}50%{box-shadow:0 0 0 8px #d4a23a00}}.login-hero h1{color:#fff;letter-spacing:-.02em;margin:22px 0 18px;font-size:clamp(32px,3.4vw,46px);font-weight:800;line-height:1.1}.login-hero h1 .gold{background:linear-gradient(140deg,#f6d27a 0%,#d4a23a 50%,#946814 100%);color:#0000;-webkit-background-clip:text;background-clip:text}.login-hero p{color:#ffffffa6;max-width:460px;font-size:15px;line-height:1.7}.login-quote{z-index:1;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffff08;border:1px solid #ffffff0f;border-radius:16px;align-items:center;gap:18px;max-width:520px;padding:18px 20px;display:flex;position:relative}.login-quote .ticker{font-family:var(--font-mono);color:#fff;font-variant-numeric:tabular-nums;align-items:baseline;gap:8px;font-size:18px;font-weight:600;display:flex}.login-quote .ticker .delta{color:#34d399;background:#10b98124;border:1px solid #10b9814d;border-radius:999px;padding:2px 8px;font-size:12px}.login-quote .spark{align-items:end;gap:3px;height:28px;display:flex}.login-quote .spark i{opacity:.85;background:linear-gradient(#f0b94a,#b8861d);border-radius:2px;width:4px;display:block}.login-panel{justify-content:center;align-items:center;min-height:100vh;padding:48px 56px;display:flex}.login-card{width:100%;max-width:420px;color:var(--color-ink-800);animation:card-in .6s var(--ease-out) both;background:#fff;border-radius:20px;padding:36px 32px 28px;position:relative;box-shadow:0 30px 60px #00000059,0 0 0 1px #ffffff0a}@keyframes card-in{0%{opacity:0;transform:translateY(12px)scale(.985)}to{opacity:1;transform:translateY(0)scale(1)}}.login-card .card-eyebrow{letter-spacing:.16em;text-transform:uppercase;color:var(--color-brand-500);font-size:12px;font-weight:700}.login-card h2{color:var(--color-ink-900);letter-spacing:-.01em;margin:8px 0 6px;font-size:24px;font-weight:700}.login-card .sub{color:var(--color-ink-500);margin:0 0 22px;font-size:13px}.login-form{flex-direction:column;gap:16px;display:flex}.login-card .hint{background:var(--color-ink-25);border:1px dashed var(--border-color);color:var(--color-ink-500);border-radius:10px;margin-top:18px;padding:12px 14px;font-size:12.5px;line-height:1.6}.login-card .hint b{color:var(--color-ink-700);font-weight:600}.login-card .hint code{font-family:var(--font-mono);color:var(--color-brand-500);background:var(--color-brand-50);border-radius:4px;padding:1px 6px;font-size:12px}.admin-layout{background:var(--bg-app);min-height:100vh;display:flex}.admin-sidebar{width:var(--sidebar-w);background:var(--bg-sidebar);color:#cbd5e1;z-index:50;border-right:1px solid #ffffff0a;flex-direction:column;flex-shrink:0;height:100vh;display:flex;position:sticky;top:0}.admin-sidebar:before{content:"";pointer-events:none;z-index:0;background:radial-gradient(420px 240px at 0 0,#d4a23a1f,#0000 60%),radial-gradient(360px 200px at 100% 100%,#3b82f61a,#0000 60%);position:absolute;inset:0}.sidebar-header{z-index:1;border-bottom:1px solid #ffffff0f;align-items:center;gap:12px;padding:20px 20px 18px;display:flex;position:relative}.sidebar-header .logo{color:#0b1220;width:40px;height:40px;font-family:var(--font-sans);letter-spacing:.02em;background:linear-gradient(140deg,#f0b94a 0%,#b8861d 100%);border-radius:11px;flex-shrink:0;place-items:center;font-size:16px;font-weight:800;display:grid;box-shadow:0 8px 24px #d4a23a4d,inset 0 0 0 1px #fff3}.sidebar-header .heading{flex-direction:column;min-width:0;display:flex}.sidebar-header .heading .title{font-family:var(--font-sans);color:#fff;letter-spacing:.01em;font-size:15px;font-weight:700}.sidebar-header .heading .sub{color:#ffffff80;letter-spacing:.14em;text-transform:uppercase;font-size:11px}.sidebar-nav{z-index:1;flex:1;padding:14px 12px;position:relative;overflow-y:auto}.sidebar-section{letter-spacing:.18em;color:#ffffff52;text-transform:uppercase;margin:14px 0 6px;padding:0 8px;font-size:10.5px;font-weight:700}.sidebar-group{margin-bottom:2px}.sidebar-item{color:#cbd5e1d9;cursor:pointer;text-align:left;width:100%;transition:background var(--dur-fast) var(--ease), color var(--dur-fast) var(--ease);background:0 0;border:none;border-radius:10px;align-items:center;gap:12px;padding:10px 12px;font-size:14px;font-weight:500;display:flex;position:relative}.sidebar-item:hover{color:#fff;background:#ffffff0a}.sidebar-item.active{color:#fff;background:linear-gradient(90deg,#d4a23a29 0%,#d4a23a0a 100%);box-shadow:inset 0 0 0 1px #d4a23a2e}.sidebar-item.active:before{content:"";background:linear-gradient(#f0b94a,#b8861d);border-radius:0 3px 3px 0;width:3px;height:18px;position:absolute;top:50%;left:-12px;transform:translateY(-50%);box-shadow:0 0 10px #d4a23a99}.sidebar-item-icon{color:#ffffffb3;flex-shrink:0;place-items:center;width:22px;height:22px;font-size:16px;line-height:1;display:grid}.sidebar-item.active .sidebar-item-icon{color:#f0b94a}.sidebar-item-label{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.sidebar-item-arrow{transition:transform var(--dur) var(--ease);color:#fff6;font-size:10px}.sidebar-item-arrow.open{transform:rotate(90deg)}.sidebar-subnav{border-left:1px solid #ffffff0f;flex-direction:column;gap:1px;margin:4px 0 6px 22px;padding:4px 0 4px 10px;display:flex}.sidebar-subitem{color:#cbd5e1b3;text-align:left;cursor:pointer;width:100%;transition:background var(--dur-fast) var(--ease), color var(--dur-fast) var(--ease);background:0 0;border:none;border-radius:8px;align-items:center;padding:8px 12px;font-size:13px;display:flex}.sidebar-subitem:hover{color:#fff;background:#ffffff08}.sidebar-subitem.active{color:#f0b94a;background:#d4a23a1a}.sidebar-footer{z-index:1;color:#ffffff80;border-top:1px solid #ffffff0f;align-items:center;gap:10px;padding:14px;font-size:12px;display:flex;position:relative}.sidebar-footer .pulse-dot{background:#34d399;border-radius:999px;width:6px;height:6px;box-shadow:0 0 0 4px #10b9812e}.admin-main{flex-direction:column;flex:1;min-width:0;display:flex;position:relative}.admin-header{height:var(--topbar-h);padding:0 var(--content-pad);background:var(--bg-topbar);-webkit-backdrop-filter:saturate(140%)blur(10px);backdrop-filter:saturate(140%)blur(10px);border-bottom:1px solid var(--border-soft);z-index:30;justify-content:space-between;align-items:center;gap:16px;display:flex;position:sticky;top:0}.header-left{align-items:center;gap:14px;min-width:0;display:flex}.sidebar-toggle{border:1px solid var(--border-color);width:36px;height:36px;color:var(--color-ink-700);cursor:pointer;background:#fff;border-radius:8px;justify-content:center;align-items:center;display:none}.sidebar-toggle:hover{background:var(--color-ink-25)}.breadcrumb{color:var(--color-ink-500);align-items:center;gap:6px;min-width:0;font-size:13px;display:flex}.breadcrumb .crumb-home{color:var(--color-ink-400);font-weight:500}.breadcrumb .crumb-sep{color:var(--color-ink-300);font-size:11px}.breadcrumb .crumb-current{color:var(--color-ink-900);font-weight:600}.header-right{align-items:center;gap:10px;display:flex}.header-icon-btn{border:1px solid var(--border-color);width:36px;height:36px;color:var(--color-ink-600);cursor:pointer;transition:background var(--dur-fast) var(--ease), color var(--dur-fast) var(--ease);background:#fff;border-radius:10px;place-items:center;display:grid;position:relative}.header-icon-btn:hover{background:var(--color-ink-25);color:var(--color-ink-900)}.header-icon-btn .dot{background:var(--color-brand-400);border:2px solid #fff;border-radius:999px;width:7px;height:7px;position:absolute;top:8px;right:8px}.user-chip{border:1px solid var(--border-color);cursor:pointer;transition:background var(--dur-fast) var(--ease);background:#fff;border-radius:999px;align-items:center;gap:10px;padding:4px 10px 4px 4px;display:flex}.user-chip:hover{background:var(--color-ink-25)}.user-chip .avatar{color:#0b1220;width:30px;height:30px;font-size:12px;font-weight:700;font-family:var(--font-sans);letter-spacing:.02em;background:linear-gradient(140deg,#f0b94a,#b8861d);border-radius:999px;place-items:center;display:grid}.user-chip .meta{flex-direction:column;line-height:1.1;display:flex}.user-chip .meta .name{color:var(--color-ink-900);font-size:13px;font-weight:600}.user-chip .meta .role{color:var(--color-brand-500);letter-spacing:.05em;font-size:11px;font-weight:600}.logout-btn{border:1px solid var(--color-brand-200);background:var(--color-brand-50);color:var(--color-brand-500);cursor:pointer;transition:background var(--dur-fast) var(--ease), color var(--dur-fast) var(--ease), border-color var(--dur-fast) var(--ease);border-radius:10px;align-items:center;gap:6px;padding:8px 14px;font-size:13px;font-weight:600;display:inline-flex}.logout-btn:hover{background:var(--color-brand-500);color:#fff;border-color:var(--color-brand-500)}.admin-content{padding:var(--content-pad);min-width:0;animation:content-in .36s var(--ease-out) both;flex:1;overflow-y:auto}@keyframes content-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.sidebar-scrim{display:none}.page-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:20px;margin-bottom:22px;display:flex}.page-header .titles{min-width:0}.page-header h1{letter-spacing:-.02em;color:var(--color-ink-900);margin:0 0 6px;font-size:24px;font-weight:700}.page-header .desc{color:var(--color-ink-500);margin:0;font-size:13.5px}.page-header .actions{flex-shrink:0;align-items:center;gap:8px;display:flex}.form-group{flex-direction:column;gap:6px;min-width:0;display:flex}.form-group label{color:var(--color-ink-700);letter-spacing:.005em;font-size:13px;font-weight:600}.form-group .hint-text{color:var(--color-ink-400);margin-top:2px;font-size:12px}.form-control,.input{border:1px solid var(--border-color);width:100%;height:42px;color:var(--color-ink-900);transition:border-color var(--dur-fast) var(--ease), box-shadow var(--dur-fast) var(--ease), background var(--dur-fast) var(--ease);background:#fff;border-radius:10px;outline:none;padding:0 14px;font-family:inherit;font-size:14px}.form-control:hover,.input:hover{border-color:var(--border-strong)}.form-control:focus,.input:focus{border-color:var(--color-brand-400);box-shadow:0 0 0 3px #d4a23a2e}.form-control:disabled,.input:disabled{background:var(--color-ink-25);color:var(--color-ink-400);cursor:not-allowed}textarea.form-control{resize:vertical;height:auto;min-height:96px;padding:10px 14px}select.form-control{appearance:none;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'><path fill='%2364748b' d='M6 8.5 1.5 4h9z'/></svg>");background-position:right 14px center;background-repeat:no-repeat;background-size:12px;padding-right:36px}.form-row{gap:16px;display:flex}.form-row>.form-group{flex:1;min-width:0}.form{flex-direction:column;gap:16px;display:flex}.form-actions{border-top:1px solid var(--border-soft);justify-content:flex-end;align-items:center;gap:8px;margin-top:4px;padding-top:8px;display:flex}.btn{cursor:pointer;white-space:nowrap;height:38px;transition:background var(--dur-fast) var(--ease), color var(--dur-fast) var(--ease), border-color var(--dur-fast) var(--ease), transform var(--dur-fast) var(--ease), box-shadow var(--dur-fast) var(--ease);-webkit-user-select:none;user-select:none;border:1px solid #0000;border-radius:10px;justify-content:center;align-items:center;gap:6px;padding:0 16px;font-family:inherit;font-size:13.5px;font-weight:600;display:inline-flex}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.5;cursor:not-allowed;transform:none}.btn-sm{border-radius:8px;height:32px;padding:0 12px;font-size:12.5px}.btn-lg{border-radius:12px;height:44px;padding:0 20px;font-size:14.5px}.btn-icon{width:38px;padding:0}.btn-block{width:100%}.btn-primary{color:#0b1220;background:linear-gradient(#f0b94a 0%,#d4a23a 100%);border-color:#b8861d;box-shadow:0 6px 16px #d4a23a47}.btn-primary:hover{background:linear-gradient(#f6cc68 0%,#dba93f 100%);box-shadow:0 8px 22px #d4a23a5c}.btn-secondary{color:var(--color-ink-700);border-color:var(--border-color);background:#fff}.btn-secondary:hover{background:var(--color-ink-25);border-color:var(--border-strong);color:var(--color-ink-900)}.btn-success{background:var(--color-success);color:#fff;border-color:#0ea271;box-shadow:0 4px 12px #10b98133}.btn-success:hover{background:#0ea271}.btn-danger{background:var(--color-danger);color:#fff;border-color:#dc2626;box-shadow:0 4px 12px #ef444433}.btn-danger:hover{background:#dc2626}.btn-ghost{color:var(--color-ink-600);background:0 0;border-color:#0000}.btn-ghost:hover{background:var(--color-ink-50);color:var(--color-ink-900)}.btn-link{color:var(--color-brand-500);text-transform:none;letter-spacing:0;background:0 0;border:none;height:auto;padding:4px 6px;font-weight:600}.btn-link:hover{color:var(--color-brand-600);text-decoration:underline}.card{background:var(--bg-card);border:1px solid var(--border-soft);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);margin-bottom:20px;padding:22px;position:relative}.card-header{border-bottom:1px solid var(--border-soft);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin:-4px 0 18px;padding-bottom:14px;display:flex}.card-title{color:var(--color-ink-900);letter-spacing:-.005em;align-items:center;gap:8px;margin:0;font-size:16px;font-weight:700;display:inline-flex}.card-title .card-eyebrow-dot{background:var(--color-brand-400);border-radius:999px;width:8px;height:8px;box-shadow:0 0 0 4px #d4a23a29}.card-actions{align-items:center;gap:8px;display:flex}.card>h2.card-title{border-bottom:1px solid var(--border-soft);margin-bottom:18px;padding-bottom:14px}.card>h2{border-bottom:1px solid var(--border-soft);margin:0 0 18px;padding-bottom:14px;font-size:16px;font-weight:700}.stats-grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px;margin-bottom:20px;display:grid}.stat-card{background:var(--bg-card);border:1px solid var(--border-soft);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);transition:transform var(--dur) var(--ease), box-shadow var(--dur) var(--ease);padding:18px 18px 16px;position:relative;overflow:hidden}.stat-card:before{content:"";background:var(--accent,linear-gradient(90deg, #f0b94a, #b8861d));height:3px;position:absolute;inset:0 0 auto}.stat-card:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}.stat-card .stat-head{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.stat-card .stat-label{color:var(--color-ink-500);letter-spacing:.02em;font-size:12.5px;font-weight:600}.stat-card .stat-icon{background:var(--accent-soft,var(--color-brand-50));width:32px;height:32px;color:var(--accent-color,var(--color-brand-500));border-radius:8px;place-items:center;font-size:14px;display:grid}.stat-card .stat-value{font-family:var(--font-sans);color:var(--color-ink-900);letter-spacing:-.02em;font-variant-numeric:tabular-nums;font-size:26px;font-weight:700;line-height:1.2}.stat-card .stat-value .unit{color:var(--color-ink-400);margin-left:4px;font-size:13px;font-weight:500}.stat-card .stat-delta{color:var(--color-ink-400);align-items:center;gap:4px;margin-top:6px;font-size:12px;display:inline-flex}.stat-card .stat-delta.up{color:var(--color-success)}.stat-card .stat-delta.down{color:var(--color-danger)}.stat-card.tone-gold{--accent:linear-gradient(90deg, #f0b94a, #b8861d);--accent-soft:var(--color-brand-50);--accent-color:var(--color-brand-500)}.stat-card.tone-blue{--accent:linear-gradient(90deg, #60a5fa, #2563eb);--accent-soft:var(--color-info-soft);--accent-color:var(--color-info)}.stat-card.tone-green{--accent:linear-gradient(90deg, #34d399, #059669);--accent-soft:var(--color-success-soft);--accent-color:var(--color-success)}.stat-card.tone-rose{--accent:linear-gradient(90deg, #fb7185, #e11d48);--accent-soft:var(--color-danger-soft);--accent-color:var(--color-danger)}.stat-card.tone-violet{--accent:linear-gradient(90deg, #a78bfa, #7c3aed);--accent-soft:var(--color-purple-soft);--accent-color:var(--color-purple)}.stat-card.tone-amber{--accent:linear-gradient(90deg, #fbbf24, #d97706);--accent-soft:var(--color-warning-soft);--accent-color:var(--color-warning)}.table-container{border-radius:var(--radius-md);margin:0 -2px;overflow-x:auto}.table{border-collapse:separate;border-spacing:0;width:100%;font-size:13.5px}.table thead th{background:var(--color-ink-25);color:var(--color-ink-500);letter-spacing:.08em;text-transform:uppercase;text-align:left;border-bottom:1px solid var(--border-soft);white-space:nowrap;padding:12px 16px;font-size:11.5px;font-weight:700;position:sticky;top:0}.table tbody td{border-bottom:1px solid var(--border-soft);color:var(--color-ink-800);vertical-align:middle;background:#fff;padding:14px 16px}.table tbody tr:last-child td{border-bottom:none}.table tbody tr{transition:background var(--dur-fast) var(--ease)}.table tbody tr:hover td{background:var(--color-ink-25)}.table .num,.table .tnum{text-align:right;font-variant-numeric:tabular-nums}.table .strong{color:var(--color-ink-900);font-weight:600}.table .muted{color:var(--color-ink-400);font-size:12.5px}.empty-row td{text-align:center;color:var(--color-ink-400);background:#fff;font-size:13.5px;padding:56px 16px!important}.empty-row .empty-icon{background:var(--color-ink-25);width:44px;height:44px;color:var(--color-ink-300);border-radius:12px;place-items:center;margin:0 auto 10px;font-size:18px;display:grid}.badge,.status-badge,.type-badge,.role-badge,.action-badge,.module-badge,.permission-tag{letter-spacing:.01em;white-space:nowrap;border:1px solid #0000;border-radius:999px;align-items:center;gap:5px;padding:3px 10px;font-size:11.5px;font-weight:600;line-height:1.5;display:inline-flex}.badge:before,.status-badge:before,.type-badge:before,.role-badge:before,.action-badge:before,.module-badge:before{content:"";opacity:.85;background:currentColor;border-radius:999px;width:6px;height:6px}.permission-tag:before{display:none}.permission-tag{padding:4px 10px}.status-pending,.badge-pending{color:var(--color-warning);background:var(--color-warning-soft);border-color:#f59e0b33}.status-approved,.status-final-approved,.badge-approved{color:var(--color-success);background:var(--color-success-soft);border-color:#10b98133}.status-rejected,.badge-rejected{color:var(--color-danger);background:var(--color-danger-soft);border-color:#ef444433}.status-active,.badge-active{color:var(--color-success);background:var(--color-success-soft);border-color:#10b98133}.status-frozen,.badge-frozen{color:var(--color-frozen);background:var(--color-frozen-soft);border-color:#6366f138}.status-disabled,.status-inactive,.badge-disabled,.badge-inactive{color:var(--color-ink-500);background:var(--color-ink-50);border-color:var(--border-color)}.type-deposit{color:var(--color-success);background:var(--color-success-soft);border-color:#10b98133}.type-withdraw{color:var(--color-danger);background:var(--color-danger-soft);border-color:#ef444433}.type-transfer{color:var(--color-info);background:var(--color-info-soft);border-color:#3b82f633}.type-profit,.role-super-admin{color:var(--color-brand-500);background:var(--color-brand-50);border-color:#d4a23a40}.role-admin{color:var(--color-info);background:var(--color-info-soft);border-color:#3b82f633}.role-user{color:var(--color-ink-600);background:var(--color-ink-50);border-color:var(--border-color)}.module-auth{color:var(--color-purple);background:var(--color-purple-soft);border-color:#8b5cf633}.module-audit{color:var(--color-warning);background:var(--color-warning-soft);border-color:#f59e0b33}.module-system{color:var(--color-ink-600);background:var(--color-ink-50);border-color:var(--border-color)}.module-funds{color:var(--color-success);background:var(--color-success-soft);border-color:#10b98133}.module-users{color:var(--color-info);background:var(--color-info-soft);border-color:#3b82f633}.permission-tag{background:var(--color-brand-50);color:var(--color-brand-600);font-family:var(--font-mono);border-color:#d4a23a2e;font-size:11.5px;font-weight:500}.status-running,.badge-running{color:var(--color-success);background:var(--color-success-soft);border-color:#10b9813d}.status-running:before,.badge-running:before{background:var(--color-success);animation:badge-pulse 1.6s var(--ease) infinite;box-shadow:0 0 0 3px #10b9812e}.status-stopped,.badge-stopped{color:var(--color-ink-500);background:var(--color-ink-50);border-color:var(--border-color)}.status-paused,.badge-paused{color:var(--color-warning);background:var(--color-warning-soft);border-color:#f59e0b38}.status-error,.badge-error{color:var(--color-danger);background:var(--color-danger-soft);border-color:#ef444438}.status-idle,.badge-idle{color:var(--color-info);background:var(--color-info-soft);border-color:#3b82f638}.status-unknown,.badge-unknown{color:var(--color-ink-500);background:var(--color-ink-50);border-color:var(--border-color)}@keyframes badge-pulse{0%,to{box-shadow:0 0 0 3px #10b98133}50%{box-shadow:0 0 0 6px #10b9810a}}.filter-bar{background:var(--bg-card);border:1px solid var(--border-soft);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:18px;padding:14px 16px;display:flex}.filter-bar .form-control{min-width:160px;height:36px;font-size:13px}.filter-bar .spacer{flex:1}.filter-bar .filter-label{color:var(--color-ink-500);letter-spacing:.02em;font-size:12px;font-weight:600}.pagination{background:var(--bg-card);border:1px solid var(--border-soft);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-top:16px;padding:12px 16px;display:flex}.pagination .info{color:var(--color-ink-500);font-size:13px}.pagination .info b{color:var(--color-ink-900);font-weight:600}.pagination .pager{align-items:center;gap:4px;display:flex}.pagination .pager .page-btn{border:1px solid var(--border-color);min-width:34px;height:34px;color:var(--color-ink-700);cursor:pointer;transition:background var(--dur-fast) var(--ease), color var(--dur-fast) var(--ease), border-color var(--dur-fast) var(--ease);background:#fff;border-radius:8px;place-items:center;padding:0 10px;font-size:13px;font-weight:500;display:inline-grid}.pagination .pager .page-btn:hover:not(:disabled){background:var(--color-ink-25);color:var(--color-ink-900);border-color:var(--border-strong)}.pagination .pager .page-btn.active{background:var(--color-brand-500);color:#fff;border-color:var(--color-brand-500);box-shadow:0 4px 10px #d4a23a40}.pagination .pager .page-btn:disabled{opacity:.4;cursor:not-allowed}.pagination .pager .page-ellipsis{min-width:30px;height:34px;color:var(--color-ink-400);place-items:center;font-size:13px;display:inline-grid}.action-buttons{align-items:center;gap:6px;display:inline-flex}.action-buttons .btn{border-radius:8px;height:30px;padding:0 10px;font-size:12px}.modal-overlay{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);z-index:1000;animation:overlay-in .2s var(--ease-out) both;background:#0b12208c;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}@keyframes overlay-in{0%{opacity:0}to{opacity:1}}.modal{border-radius:var(--radius-xl);width:100%;max-width:540px;max-height:90vh;animation:modal-in .28s var(--ease-out) both;background:#fff;flex-direction:column;display:flex;overflow:hidden;box-shadow:0 30px 80px #0b122059,0 0 0 1px #ffffff0a}@keyframes modal-in{0%{opacity:0;transform:translateY(10px)scale(.985)}to{opacity:1;transform:translateY(0)scale(1)}}.modal-header{border-bottom:1px solid var(--border-soft);background:linear-gradient(#fcfbf6 0%,#fff 100%);justify-content:space-between;align-items:center;padding:20px 24px;display:flex}.modal-title{color:var(--color-ink-900);letter-spacing:-.005em;align-items:center;gap:10px;margin:0;font-size:17px;font-weight:700;display:inline-flex}.modal-title:before{content:"";background:linear-gradient(#f0b94a,#b8861d);border-radius:2px;width:4px;height:18px}.modal-close{border:1px solid var(--border-color);width:32px;height:32px;color:var(--color-ink-500);cursor:pointer;transition:background var(--dur-fast) var(--ease), color var(--dur-fast) var(--ease);background:#fff;border-radius:8px;place-items:center;font-size:18px;line-height:1;display:grid}.modal-close:hover{background:var(--color-ink-25);color:var(--color-ink-900)}.modal-body{padding:22px 24px;overflow-y:auto}.modal-footer{border-top:1px solid var(--border-soft);background:var(--color-ink-25);justify-content:flex-end;align-items:center;gap:8px;padding:16px 24px;display:flex}.role-info{flex-direction:column;gap:14px;display:flex}.info-item{align-items:flex-start;gap:12px;display:flex}.info-item label{color:var(--color-ink-500);flex:0 0 90px;padding-top:1px;font-size:12.5px;font-weight:600}.info-item>span:not(.permission-tag){color:var(--color-ink-800);flex:1;font-size:14px}.permission-list{flex-wrap:wrap;flex:1;gap:6px;display:flex}.loading,.no-data{color:var(--color-ink-500);justify-content:center;align-items:center;gap:10px;padding:48px 16px;font-size:13.5px;display:flex}.loading:before{content:"";border:2px solid var(--color-ink-100);border-top-color:var(--color-brand-400);border-radius:999px;width:18px;height:18px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.error-message{background:var(--color-danger-soft);color:#b91c1c;border:1px solid #ef444433;border-radius:10px;align-items:flex-start;gap:10px;padding:12px 14px;font-size:13px;line-height:1.55;display:flex}.error-message:before{content:"!";background:var(--color-danger);color:#fff;border-radius:999px;flex:0 0 18px;place-items:center;width:18px;height:18px;margin-top:1px;font-size:11px;font-weight:700;display:grid}.activity-list{flex-direction:column;gap:0;display:flex}.activity-item{border-bottom:1px solid var(--border-soft);align-items:center;gap:14px;padding:14px 4px;display:flex}.activity-item:last-child{border-bottom:none}.activity-item .activity-time{font-family:var(--font-mono);color:var(--color-ink-400);font-variant-numeric:tabular-nums;flex:0 0 160px;font-size:12px}.activity-item .activity-action{color:var(--color-ink-800);flex:1;font-size:13.5px}.activity-item .activity-amount{font-family:var(--font-mono);color:var(--color-ink-900);font-variant-numeric:tabular-nums;font-size:13px;font-weight:600}.activity-item .activity-amount.up{color:var(--color-success)}.activity-item .activity-amount.down{color:var(--color-danger)}.chart-card{padding:22px}.chart-head{justify-content:space-between;align-items:center;margin-bottom:16px;display:flex}.chart-head .title{color:var(--color-ink-900);font-size:16px;font-weight:700}.chart-head .legend{color:var(--color-ink-500);align-items:center;gap:14px;font-size:12px;display:flex}.chart-head .legend .swatch{vertical-align:middle;border-radius:999px;width:8px;height:8px;margin-right:6px;display:inline-block}.chart-body{background:var(--color-ink-25);border-radius:12px;height:220px;position:relative;overflow:hidden}.chart-grid{pointer-events:none;background-image:linear-gradient(#0f172a0d 1px,#0000 1px);background-size:100% 25%;position:absolute;inset:16px}.chart-svg{width:100%;height:100%;display:block;position:absolute;inset:0}.chart-body .axis{color:var(--color-ink-400);font-size:11px;font-family:var(--font-mono);font-variant-numeric:tabular-nums;justify-content:space-between;padding:0 16px;display:flex;position:absolute;left:0;right:0}.chart-body .axis.top{top:6px}.chart-body .axis.bottom{bottom:6px}@media (width<=1100px){:root{--content-pad:22px}.stats-grid{grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}.login-brand{padding:40px 40px 32px}}@media (width<=960px){.login-page{grid-template-columns:1fr}.login-brand{display:none}.login-panel{min-height:100vh;padding:32px 24px}.admin-sidebar{transition:transform var(--dur) var(--ease);position:fixed;top:0;bottom:0;left:0;transform:translate(-100%);box-shadow:0 20px 60px #00000059}.admin-sidebar.open{transform:translate(0)}.sidebar-toggle{display:inline-grid}.sidebar-scrim{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:40;opacity:0;pointer-events:none;transition:opacity var(--dur) var(--ease);background:#0b122073;display:block;position:fixed;inset:0}.sidebar-scrim.show{opacity:1;pointer-events:auto}}@media (width<=640px){:root{--content-pad:16px;--topbar-h:56px}.admin-header{padding:0 16px}.user-chip .meta{display:none}.page-header h1{font-size:20px}.stat-card .stat-value{font-size:22px}.form-row{flex-direction:column;gap:12px}.pagination{flex-direction:column;align-items:stretch}.pagination .pager{justify-content:center}.activity-item{flex-wrap:wrap}.activity-item .activity-time{flex:0 0 100%}.modal{border-radius:var(--radius-lg)}.modal-header,.modal-body,.modal-footer{padding-left:18px;padding-right:18px}.login-card{padding:28px 22px}}@media (width<=480px){.header-right .logout-btn .label{display:none}.table thead th,.table tbody td{padding:12px}}.drawer-overlay{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:900;animation:overlay-in .2s var(--ease-out) both;background:#0b122073;position:fixed;inset:0}.drawer{background:var(--bg-app);z-index:901;border-left:1px solid var(--border-soft);width:min(720px,100vw);animation:drawer-in .32s var(--ease-out) both;flex-direction:column;display:flex;position:fixed;top:0;bottom:0;right:0;box-shadow:-20px 0 50px #0b12202e}@keyframes drawer-in{0%{opacity:0;transform:translate(28px)}to{opacity:1;transform:translate(0)}}.drawer-header{color:#fff;background:linear-gradient(#0b1220 0%,#111a2e 100%);border-bottom:1px solid #ffffff0f;padding:20px 24px 18px;position:relative;overflow:hidden}.drawer-header:before{content:"";pointer-events:none;background:radial-gradient(420px 200px at 0 0,#d4a23a33,#0000 60%),radial-gradient(360px 180px at 100% 100%,#3b82f624,#0000 60%);position:absolute;inset:0}.drawer-header .row{justify-content:space-between;align-items:center;gap:14px;display:flex;position:relative}.drawer-header .user-block{align-items:center;gap:14px;min-width:0;display:flex;position:relative}.drawer-header .user-avatar{color:#0b1220;width:44px;height:44px;font-weight:800;font-family:var(--font-sans);background:linear-gradient(140deg,#f0b94a 0%,#b8861d 100%);border-radius:12px;flex-shrink:0;place-items:center;font-size:16px;display:grid;box-shadow:0 8px 22px #d4a23a4d,inset 0 0 0 1px #fff3}.drawer-header .user-meta{min-width:0}.drawer-header .user-meta .eyebrow{letter-spacing:.18em;text-transform:uppercase;color:#ffffff8c;font-size:11px;font-weight:600}.drawer-header .user-meta .name{font-family:var(--font-sans);color:#fff;letter-spacing:-.005em;align-items:center;gap:10px;margin-top:2px;font-size:18px;font-weight:700;display:flex}.drawer-header .user-meta .email{color:#ffffff8c;text-overflow:ellipsis;white-space:nowrap;max-width:320px;margin-top:2px;font-size:12.5px;overflow:hidden}.drawer-header .close-btn{color:#fffc;cursor:pointer;width:36px;height:36px;transition:background var(--dur-fast) var(--ease), color var(--dur-fast) var(--ease);background:#ffffff0f;border:1px solid #ffffff14;border-radius:10px;place-items:center;font-size:18px;display:grid;position:relative}.drawer-header .close-btn:hover{color:#fff;background:#ffffff1f}.drawer-body{flex:1;padding:20px 24px 28px;overflow-y:auto}.drawer-toolbar{justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px;display:flex}.drawer-toolbar h3{color:var(--color-ink-900);letter-spacing:.005em;align-items:center;gap:8px;margin:0;font-size:14px;font-weight:700;display:inline-flex}.drawer-toolbar h3:before{content:"";background:linear-gradient(#f0b94a,#b8861d);border-radius:2px;width:4px;height:16px}.drawer-toolbar .meta{color:var(--color-ink-500);font-size:12px;font-weight:500}.drawer-toolbar .meta b{color:var(--color-ink-900);font-weight:700}.strategy-list{flex-direction:column;gap:14px;display:flex}.strategy-card{background:var(--bg-card);border:1px solid var(--border-soft);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);transition:border-color var(--dur-fast) var(--ease), box-shadow var(--dur) var(--ease);padding:18px 18px 16px}.strategy-card:hover{box-shadow:var(--shadow-md)}.strategy-card.is-error{border-color:#ef444447}.strategy-card.is-running{border-color:#10b98147}.strategy-card .head{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:14px;display:flex}.strategy-card .head .title-block{min-width:0}.strategy-card .head .name{font-family:var(--font-mono);color:var(--color-ink-500);letter-spacing:.01em;word-break:break-all;font-size:12.5px;font-weight:500}.strategy-card .head .display-name{font-family:var(--font-sans);color:var(--color-ink-900);letter-spacing:-.005em;margin-top:2px;font-size:16px;font-weight:700}.strategy-card .head .status-wrap{flex-shrink:0}.strategy-card .stats{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-bottom:14px;display:grid}.strategy-card .stat{background:var(--color-ink-25);border:1px solid var(--border-soft);border-radius:10px;padding:10px 12px}.strategy-card .stat .label{color:var(--color-ink-500);letter-spacing:.02em;margin-bottom:4px;font-size:11.5px;font-weight:600}.strategy-card .stat .value{font-family:var(--font-sans);color:var(--color-ink-900);font-variant-numeric:tabular-nums;letter-spacing:-.01em;font-size:16px;font-weight:700;line-height:1.2}.strategy-card .stat .value.profit-up{color:var(--color-success)}.strategy-card .stat .value.profit-down{color:var(--color-danger)}.strategy-card .stat .sub{color:var(--color-ink-400);font-variant-numeric:tabular-nums;margin-top:2px;font-size:11.5px}.strategy-card .timeline{border-top:1px dashed var(--border-soft);border-bottom:1px dashed var(--border-soft);color:var(--color-ink-500);flex-wrap:wrap;gap:14px 22px;margin-bottom:12px;padding:10px 0 12px;font-size:12.5px;display:flex}.strategy-card .timeline .item{align-items:center;gap:6px;display:inline-flex}.strategy-card .timeline .item .key{color:var(--color-ink-400)}.strategy-card .timeline .item .v{color:var(--color-ink-800);font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:12px}.strategy-card .timeline .item .v.muted{color:var(--color-ink-400);font-style:italic}.strategy-card .error-line{background:var(--color-danger-soft);color:#b91c1c;border:1px solid #ef444433;border-radius:10px;align-items:flex-start;gap:8px;margin-bottom:12px;padding:10px 12px;font-size:12.5px;line-height:1.5;display:flex}.strategy-card .error-line:before{content:"!";background:var(--color-danger);color:#fff;border-radius:999px;flex:0 0 18px;place-items:center;width:18px;height:18px;margin-top:1px;font-size:11px;font-weight:700;display:grid}.strategy-card .actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.drawer-state{background:var(--bg-card);border:1px solid var(--border-soft);border-radius:var(--radius-lg);text-align:center;color:var(--color-ink-500);padding:40px 24px;font-size:13.5px}.drawer-state .icon{background:var(--color-ink-25);width:44px;height:44px;color:var(--color-ink-300);border-radius:12px;place-items:center;margin:0 auto 10px;font-size:18px;display:grid}.drawer-state.error .icon{color:var(--color-danger);background:var(--color-danger-soft)}.drawer-state.error{color:#b91c1c}@media (width<=640px){.drawer{width:100vw}.drawer-header{padding:16px 18px 14px}.drawer-body{padding:16px 18px 24px}.drawer-header .user-meta .email{max-width:220px}.strategy-card .stats{grid-template-columns:repeat(2,minmax(0,1fr))}.strategy-card .timeline{gap:8px 16px}}.last-run-result{background:linear-gradient(135deg,#f0fdf4 0%,#ecfdf5 100%);border:1px solid #bbf7d0;border-radius:12px;margin-bottom:14px;padding:12px 14px}.last-run-result .result-header{align-items:center;gap:8px;margin-bottom:8px;display:flex}.last-run-result .result-title{color:#166534;font-size:13px;font-weight:700}.last-run-result .result-tag{font-family:var(--font-mono);color:#15803d;background:#dcfce7;border-radius:6px;padding:1px 8px;font-size:11px}.last-run-result .result-signals{flex-direction:column;gap:6px;display:flex}.signal-row{background:#f9fafb;border:1px solid #e5e7eb;border-radius:8px;padding:8px 10px}.signal-row .signal-row-head{align-items:center;gap:8px;margin-bottom:4px;display:flex}.signal-row .signal-vol{font-family:var(--font-mono);font-size:14px;font-weight:700}.signal-row .signal-symbol{color:var(--color-ink-500);font-size:11.5px}.signal-row .signal-row-body{flex-wrap:wrap;gap:4px 12px;font-size:12px;display:flex}.signal-row .signal-comment{color:var(--color-ink-600);width:100%}.signal-row .signal-levels{gap:10px;display:inline-flex}.signal-row .signal-levels .sl{color:#dc2626}.signal-row .signal-levels .tp{color:#16a34a}.signal-row .signal-time{color:var(--color-ink-400);font-size:11px}.side-badge{border-radius:6px;flex-shrink:0;place-items:center;width:22px;height:22px;font-size:12px;font-weight:800;display:inline-grid}.side-badge.buy{color:#16a34a;background:#dcfce7}.side-badge.sell{color:#dc2626;background:#fee2e2}.signal-panel{z-index:1100!important}.signals-list{flex-direction:column;gap:8px;margin-top:12px;display:flex}.btn-xs{height:24px;padding:2px 8px;font-size:11px;line-height:1}.strategy-card .timeline .item .v .signal-count-link{color:var(--color-primary);cursor:pointer;text-underline-offset:2px;text-decoration:underline}.strategy-card .timeline .item .v .signal-count-link:hover{color:var(--color-primary-dark)}
