:root{--bg: #f1f3f8;--surface: #ffffff;--border: #e5e8ef;--text: #1c2130;--text-muted: #7a8399;--primary: #3b6df0;--primary-dark: #2b53c4;--primary-soft: #eaf0ff;--danger: #e0364a;--danger-soft: #fdecee;--success: #17a568;--success-soft: #e8f8f1;--warning: #d68a02;--warning-soft: #fdf3e0;--radius: 10px;--radius-sm: 7px;--shadow: 0 1px 2px rgba(20, 24, 38, .04), 0 4px 14px rgba(20, 24, 38, .06);--sidebar-width: 232px;--topbar-height: 60px}*{box-sizing:border-box}html,body{height:100%}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;background:var(--bg);color:var(--text);font-size:14px;-webkit-font-smoothing:antialiased}h1,h2,h3,h4{margin:0 0 4px;font-weight:650;letter-spacing:-.01em}a{color:var(--primary)}.page{padding:28px 32px 40px;max-width:1440px}.page-header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:22px;flex-wrap:wrap}.page-header h1{font-size:21px}.page-subtitle{color:var(--text-muted);font-size:13px;margin-top:2px}.toolbar{display:flex;align-items:flex-end;gap:12px;flex-wrap:wrap;margin-bottom:18px;padding:14px 16px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:20px}.section-title{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);margin:28px 0 12px}.section-title:first-child{margin-top:0}.kpi-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:14px;margin-bottom:8px}.kpi-card{display:flex;align-items:center;gap:14px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px 18px}.kpi-icon{width:42px;height:42px;min-width:42px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:19px;background:var(--primary-soft);color:var(--primary)}.kpi-icon.tone-success{background:var(--success-soft);color:var(--success)}.kpi-icon.tone-danger{background:var(--danger-soft);color:var(--danger)}.kpi-icon.tone-warning{background:var(--warning-soft);color:var(--warning)}.kpi-body .value{font-size:24px;font-weight:700;line-height:1.15}.kpi-body .label{color:var(--text-muted);font-size:12px;margin-top:1px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:9px 16px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface);color:var(--text);font-size:13px;font-weight:600;cursor:pointer;transition:background-color .15s ease,box-shadow .15s ease}.btn:hover:not(:disabled){background:var(--bg)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--primary);border-color:var(--primary);color:#fff}.btn-primary:hover:not(:disabled){background:var(--primary-dark)}.btn-sm{padding:6px 11px;font-size:12px}.field{display:flex;flex-direction:column;gap:5px}.field label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.03em;color:var(--text-muted)}.input,.select{padding:9px 11px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface);color:var(--text);font-size:13px;min-width:0}.input:focus,.select:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}.toggle{display:flex;align-items:center;gap:7px;font-size:13px;font-weight:500;cursor:pointer;padding-bottom:9px}.table-wrap{overflow-x:auto;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}table.data-table{width:100%;border-collapse:collapse;font-size:13px}table.data-table th,table.data-table td{text-align:left;padding:11px 14px;border-bottom:1px solid var(--border);white-space:nowrap}table.data-table th{background:#fafbfd;color:var(--text-muted);font-weight:700;font-size:11px;text-transform:uppercase;letter-spacing:.04em;position:sticky;top:0}table.data-table tbody tr:last-child td{border-bottom:none}table.data-table tbody tr:hover{background:#fafbfd}.empty-state{padding:40px;text-align:center;color:var(--text-muted)}.badge{display:inline-block;padding:3px 10px;border-radius:999px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.03em}.badge-success{background:var(--success-soft);color:var(--success)}.badge-danger{background:var(--danger-soft);color:var(--danger)}.badge-muted{background:#eef0f4;color:var(--text-muted)}.badge-warning{background:var(--warning-soft);color:var(--warning)}.error-text{color:var(--danger);font-size:13px}
