:root{--primary: #5C1D46;--primary-hover: #4A1638;--secondary: #2D061D;--accent: #A60000;--accent-strong: #780000;--bg: #FFFFFF;--surface: #FFFFFF;--surface-alt: #F7F5F6;--surface-sunken: #F2EEF0;--fg: #656565;--fg-strong: #2D061D;--muted: #987F8D;--border: #E4DCE0;--border-strong: #C9BCC3;--ok: #2E6B4F;--ok-bg: #EAF3EE;--warn: #9A6B00;--warn-bg: #FBF3E2;--error: #A60000;--error-bg: #FBEDED;--info-bg: #F3EAF0;--font-body: "Open Sans", system-ui, -apple-system, sans-serif;--font-display: "Open Sans", system-ui, sans-serif;--font-mono: "JetBrains Mono", "SF Mono", "Menlo", monospace;--text-xs: 11px;--text-sm: 12px;--text-base: 13px;--text-md: 14px;--text-lg: 16px;--text-xl: 20px;--text-2xl: 26px;--text-3xl: 34px;--leading-body: 1.5;--radius-sm: 3px;--radius: 5px;--radius-lg: 8px;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 24px;--space-6: 32px;--shadow-sm: 0 1px 2px rgba(45, 6, 29, .06);--shadow: 0 2px 8px rgba(45, 6, 29, .1);--shadow-lg: 0 8px 28px rgba(45, 6, 29, .16);--sidebar-w: 244px;--header-h: 56px}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:var(--font-body);font-size:var(--text-base);line-height:var(--leading-body);color:var(--fg);background:var(--surface-alt);-webkit-font-smoothing:antialiased}h1,h2,h3,h4{color:var(--fg-strong);font-weight:600;margin:0;letter-spacing:0}a{color:var(--primary);text-decoration:none}a:hover{text-decoration:underline}button{font-family:inherit}::-webkit-scrollbar{width:11px;height:11px}::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:6px;border:3px solid var(--surface-alt)}::-webkit-scrollbar-track{background:transparent}.btn{display:inline-flex;align-items:center;gap:var(--space-2);padding:8px 14px;min-height:38px;border-radius:var(--radius);border:1px solid var(--border-strong);background:var(--surface);color:var(--fg-strong);font-size:var(--text-md);font-weight:600;cursor:pointer;transition:background .12s,border-color .12s,color .12s;white-space:nowrap}.btn:hover{background:var(--surface-sunken);border-color:var(--muted)}.btn-primary{background:var(--primary);border-color:var(--primary);color:#fff}.btn-primary:hover{background:var(--primary-hover);border-color:var(--primary-hover)}.btn-ghost{border-color:transparent;background:transparent}.btn-ghost:hover{background:var(--surface-sunken)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-sm{min-height:30px;padding:4px 10px;font-size:var(--text-sm)}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}.badge{display:inline-flex;align-items:center;gap:5px;padding:2px 8px;border-radius:100px;font-size:var(--text-xs);font-weight:600;letter-spacing:.02em;text-transform:uppercase}.badge-error{background:var(--error-bg);color:var(--accent-strong)}.badge-warn{background:var(--warn-bg);color:var(--warn)}.badge-ok{background:var(--ok-bg);color:var(--ok)}.badge-info{background:var(--info-bg);color:var(--primary)}.mono{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.data-table{width:100%;border-collapse:collapse;font-size:var(--text-base)}.data-table th{position:sticky;top:0;z-index:1;background:var(--surface-sunken);color:var(--fg-strong);font-weight:600;text-align:left;padding:8px 12px;border-bottom:1px solid var(--border-strong);white-space:nowrap}.data-table th.num,.data-table td.num{text-align:right;font-variant-numeric:tabular-nums;font-family:var(--font-mono)}.data-table td{padding:6px 12px;border-bottom:1px solid var(--border);vertical-align:top}.data-table tbody tr:nth-child(2n){background:var(--surface-alt)}.data-table tbody tr:hover{background:var(--info-bg)}.data-table tbody tr.clickable{cursor:pointer}.field{display:flex;flex-direction:column;gap:5px}.field label{font-size:var(--text-sm);font-weight:600;color:var(--fg-strong)}.field input,.field select{padding:8px 10px;border:1px solid var(--border-strong);border-radius:var(--radius);font-size:var(--text-md);font-family:inherit;color:var(--fg-strong);background:var(--surface)}.field input:focus,.field select:focus{outline:2px solid var(--primary);outline-offset:-1px;border-color:var(--primary)}.spinner{width:32px;height:32px;border:3px solid rgba(255,255,255,.25);border-top-color:#fff;border-radius:50%;animation:spin .7s linear infinite}.spinner-dark{border:3px solid var(--border-strong);border-top-color:var(--primary)}@keyframes spin{to{transform:rotate(360deg)}}.alert-box{background:var(--error-bg);border:1px solid var(--accent);color:var(--accent-strong);border-radius:var(--radius);padding:10px 14px;font-size:var(--text-sm)}.empty-state{border:1px dashed var(--border-strong);border-radius:var(--radius);padding:40px 24px;text-align:center;color:var(--fg-strong);background:var(--surface-alt)}.login-gate{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;background:var(--secondary);padding:24px;font-family:var(--font-body)}.login-card{max-width:420px;width:100%;background:#fff;border-radius:12px;padding:36px 32px;text-align:center;box-shadow:0 24px 60px #00000059}.login-logo{width:56px;height:56px;border-radius:10px;object-fit:contain;margin-bottom:16px}.login-card h1{color:var(--fg-strong);font-size:24px;margin:0 0 8px}.login-sub{color:var(--fg);font-size:var(--text-md);line-height:1.5;margin:0 0 24px}.login-btn{width:100%;justify-content:center;padding:12px 16px;font-size:var(--text-lg)}.login-note{color:var(--muted);font-size:var(--text-sm);line-height:1.5;margin:20px 0 0}.login-footer{color:#ffffff80;font-size:var(--text-sm);margin-top:20px}.btn-link{background:none;border:none;padding:0;color:var(--primary);font:inherit;font-weight:600;text-decoration:underline;cursor:pointer}.btn-link:hover{color:var(--primary-hover)}
