:root{--brand-blue:#1f5ba8;--brand-blue-dark:#143f78;--brand-blue-light:#3e86cb;--brand-green:#5ba84f;--color-primary:#1f5ba8;--color-primary-hover:#18497f;--color-on-primary:#fff;--color-secondary:#5ba84f;--color-accent:#3e86cb;--color-background:#f3f6fb;--color-surface:#fff;--color-foreground:#16263f;--color-muted:#eef2f8;--color-muted-foreground:#5f7088;--color-border:#dbe3ee;--color-border-strong:#c2cedd;--color-destructive:#dc2626;--color-destructive-soft:#fef2f2;--color-success:#16a34a;--color-success-soft:#f0fdf4;--color-warning:#d97706;--color-warning-soft:#fffbeb;--color-ring:#1f5ba8;--font-body:"Fira Sans", system-ui, -apple-system, sans-serif;--font-mono:"Fira Code", ui-monospace, monospace;--text-xs:12px;--text-sm:13px;--text-base:14px;--text-md:16px;--text-lg:18px;--text-xl:22px;--text-2xl:28px;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;--space-8:48px;--radius-sm:6px;--radius:10px;--radius-lg:14px;--shadow-sm:0 1px 2px #16263f0f;--shadow:0 2px 8px #16263f14;--shadow-lg:0 8px 24px #16263f1f;--sidebar-w:244px;--topbar-h:60px}*{box-sizing:border-box}html,body,#root{height:100%}body{font-family:var(--font-body);font-size:var(--text-base);color:var(--color-foreground);background:var(--color-background);-webkit-font-smoothing:antialiased;margin:0;line-height:1.5}a{color:var(--color-accent);text-decoration:none}a:hover{text-decoration:underline}h1,h2,h3,h4{font-family:var(--font-body);color:var(--color-foreground);margin:0;font-weight:600}.mono,td.num,th.num{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.btn{align-items:center;gap:var(--space-2);font-family:var(--font-body);font-size:var(--text-sm);border-radius:var(--radius-sm);cursor:pointer;white-space:nowrap;border:1px solid #0000;min-height:38px;padding:8px 14px;font-weight:500;transition:background .16s,border-color .16s,color .16s;display:inline-flex}.btn:focus-visible{outline:2px solid var(--color-ring);outline-offset:2px}.btn-primary{background:var(--color-primary);color:var(--color-on-primary)}.btn-primary:hover{background:var(--color-primary-hover)}.btn-secondary{background:var(--color-surface);color:var(--color-foreground);border-color:var(--color-border-strong)}.btn-secondary:hover{background:var(--color-muted)}.btn-ghost{color:var(--color-muted-foreground);background:0 0}.btn-ghost:hover{background:var(--color-muted);color:var(--color-foreground)}.btn-danger{background:var(--color-destructive);color:#fff}.btn-danger:hover{filter:brightness(.94)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-sm{min-height:30px;font-size:var(--text-xs);padding:4px 10px}.field{gap:var(--space-1);flex-direction:column;display:flex}.field label{font-size:var(--text-xs);color:var(--color-muted-foreground);font-weight:500}.input,.select{font-family:var(--font-body);font-size:var(--text-sm);color:var(--color-foreground);background:var(--color-surface);border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);width:100%;min-height:38px;padding:8px 10px;transition:border-color .16s,box-shadow .16s}.input:focus,.select:focus{border-color:var(--color-primary);outline:none;box-shadow:0 0 0 3px #0f766e26}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow-sm)}.card-pad{padding:var(--space-5)}.stat-grid{gap:var(--space-4);grid-template-columns:repeat(auto-fit,minmax(200px,1fr));display:grid}.stat{gap:var(--space-2);padding:var(--space-4) var(--space-5);flex-direction:column;display:flex}.stat-label{font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.04em;color:var(--color-muted-foreground);align-items:center;gap:var(--space-2);display:flex}.stat-value{font-family:var(--font-mono);font-size:var(--text-2xl);font-variant-numeric:tabular-nums;font-weight:600}.stat-icon{border-radius:var(--radius-sm);background:var(--color-muted);width:34px;height:34px;color:var(--color-primary);place-items:center;display:grid}.badge{font-size:var(--text-xs);border-radius:999px;align-items:center;gap:4px;padding:2px 8px;font-weight:500;display:inline-flex}.badge-neutral{background:var(--color-muted);color:var(--color-muted-foreground)}.badge-success{background:var(--color-success-soft);color:var(--color-success)}.badge-warning{background:var(--color-warning-soft);color:var(--color-warning)}.badge-danger{background:var(--color-destructive-soft);color:var(--color-destructive)}.table-wrap{overflow-x:auto}table.data{border-collapse:collapse;width:100%;font-size:var(--text-sm)}table.data thead th{text-align:left;font-weight:600;font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.03em;color:var(--color-muted-foreground);border-bottom:1px solid var(--color-border);background:var(--color-muted);white-space:nowrap;padding:10px 14px;position:sticky;top:0}table.data tbody td{border-bottom:1px solid var(--color-border);padding:10px 14px}table.data tbody tr{transition:background .12s}table.data tbody tr:hover{background:var(--color-muted)}table.data tbody tr.selected{background:#0f766e12}td.num,th.num{text-align:right}.filter-bar{align-items:flex-end;gap:var(--space-3);padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--color-border);flex-wrap:wrap;display:flex}.filter-bar .field{min-width:140px}.bulk-bar{align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-5);border-bottom:1px solid var(--color-border);background:#0f766e14;display:flex}.bulk-count{color:var(--color-primary);font-weight:600}.empty,.loading,.error-box{justify-content:center;align-items:center;gap:var(--space-3);padding:var(--space-8);color:var(--color-muted-foreground);text-align:center;flex-direction:column;display:flex}.error-box{color:var(--color-destructive)}.spinner{border:3px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;width:28px;height:28px;animation:.7s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.app-shell{grid-template-columns:var(--sidebar-w) 1fr;min-height:100dvh;display:grid}.sidebar{color:#c7d6ec;background:#102b52;flex-direction:column;height:100dvh;display:flex;position:sticky;top:0}.sidebar-brand{padding:0 var(--space-4);height:var(--topbar-h);background:var(--color-surface);border-bottom:1px solid var(--color-border);justify-content:center;align-items:center;display:flex}.sidebar-brand .brand-logo-side{width:auto;max-width:88%;height:30px}.nav{padding:var(--space-4) var(--space-3);flex-direction:column;gap:2px;display:flex;overflow-y:auto}.nav-section{text-transform:uppercase;letter-spacing:.08em;color:#7d97bd;padding:var(--space-4) var(--space-3) var(--space-1);font-size:10px}.nav a{align-items:center;gap:var(--space-3);padding:9px var(--space-3);border-radius:var(--radius-sm);color:#c7d6ec;font-size:var(--text-sm);font-weight:500;transition:background .14s,color .14s;display:flex}.nav a:hover{color:#fff;background:#ffffff14;text-decoration:none}.nav a.active{background:var(--brand-blue-light);color:#fff}.nav a svg{flex-shrink:0;width:18px;height:18px}.nav-download{align-items:center;gap:var(--space-3);margin-top:auto;margin:auto var(--space-3) var(--space-4);padding:10px var(--space-3);border-radius:var(--radius-sm);color:#fff;background:var(--brand-green);font-size:var(--text-sm);font-weight:600;transition:filter .14s;display:flex}.nav-download:hover{filter:brightness(.94);color:#fff;text-decoration:none}.nav-download svg{flex-shrink:0;width:18px;height:18px}.main{flex-direction:column;min-width:0;display:flex}.topbar{height:var(--topbar-h);padding:0 var(--space-6);background:var(--color-surface);border-bottom:1px solid var(--color-border);z-index:20;justify-content:space-between;align-items:center;display:flex;position:sticky;top:0}.topbar h1{font-size:var(--text-lg)}.topbar .user{align-items:center;gap:var(--space-3);display:flex}.avatar{background:var(--color-primary);color:#fff;width:32px;height:32px;font-weight:600;font-size:var(--text-sm);border-radius:50%;place-items:center;display:grid}.content{padding:var(--space-6);gap:var(--space-5);flex-direction:column;display:flex}.page-head{justify-content:space-between;align-items:center;gap:var(--space-4);flex-wrap:wrap;display:flex}.page-head p{color:var(--color-muted-foreground);font-size:var(--text-sm);margin:4px 0 0}.login-shell{background:linear-gradient(135deg, var(--brand-blue-dark) 0%, var(--brand-blue) 55%, var(--brand-blue-light) 100%);min-height:100dvh;padding:var(--space-4);place-items:center;display:grid}.login-card{width:100%;max-width:400px;padding:var(--space-6);gap:var(--space-4);flex-direction:column;display:flex}.login-card .brand{align-items:center;gap:var(--space-2);text-align:center;flex-direction:column;display:flex}.login-card .brand-logo{width:230px;max-width:80%;height:auto}.login-card .brand-product{font-size:var(--text-sm);color:var(--color-muted-foreground);letter-spacing:.02em}.login-card .brand-product b{color:var(--brand-blue);font-weight:600}.login-card .btn-primary{background:var(--brand-blue)}.login-card .btn-primary:hover{background:var(--brand-blue-dark)}.login-card .input:focus,.login-card .input:focus-visible{border-color:var(--brand-blue);box-shadow:0 0 0 3px #1f5ba826}input[type=checkbox]{width:16px;height:16px;accent-color:var(--color-primary);cursor:pointer}@media (width<=860px){.app-shell{grid-template-columns:1fr}.sidebar{z-index:50;width:var(--sidebar-w);transition:transform .2s;position:fixed;transform:translate(-100%)}.sidebar.open{transform:translate(0)}}@media (prefers-reduced-motion:reduce){*{transition-duration:.01ms!important;animation-duration:.01ms!important}}
