:root{--bg: #f4f6fb;--surface: #ffffff;--sidebar: #111827;--sidebar-muted: #9ca3af;--border: #e5e7eb;--text: #111827;--muted: #6b7280;--primary: #2563eb;--primary-dark: #1d4ed8;--primary-soft: #e0e7ff;--success: #16a34a;--warning: #d97706;--danger: #dc2626;--radius: 10px;--radius-sm: 8px;--shadow: 0 1px 2px rgba(15, 23, 42, .06), 0 8px 24px rgba(15, 23, 42, .04);--shadow-lg: 0 12px 32px rgba(15, 23, 42, .12);--z-modal: 900;--z-toast: 1000;font-family:Inter,Segoe UI,system-ui,-apple-system,sans-serif}*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:var(--bg);color:var(--text)}body{font-size:14px;line-height:1.5}a{color:var(--primary);text-decoration:none}button,input,select,textarea{font:inherit}h1,h2,h3{margin:0;font-weight:650}h1{font-size:22px}h2{font-size:18px}h3{font-size:15px}.page{display:flex;flex-direction:column;gap:20px}.page-header{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}.muted{color:var(--muted)}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px}.grid{display:grid;gap:16px}.grid.cols-2{grid-template-columns:repeat(auto-fit,minmax(320px,1fr))}.grid.cards{grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}.stat-value{font-size:28px;font-weight:700;margin-top:6px}.stat-label{color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.04em}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:1px solid transparent;border-radius:8px;padding:8px 14px;background:var(--primary);color:#fff;cursor:pointer;font-weight:600;transition:background .15s ease}.btn:hover{background:var(--primary-dark)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn.secondary{background:#fff;color:var(--text);border-color:var(--border)}.btn.secondary:hover{background:#f9fafb}.btn.danger{background:var(--danger)}.btn.danger:hover{background:#b91c1c}.btn.sm{padding:5px 10px;font-size:12px}.input,select.input,textarea.input{width:100%;border:1px solid var(--border);border-radius:8px;padding:8px 10px;background:#fff;color:var(--text);outline:none}.input:focus{border-color:var(--primary);box-shadow:0 0 0 3px #2563eb1f}.field{display:flex;flex-direction:column;gap:5px}.field label{font-size:12px;font-weight:600;color:var(--muted)}.form-grid{display:grid;gap:14px;grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}.toolbar{display:flex;gap:10px;flex-wrap:wrap;align-items:end}.toolbar .field{min-width:150px}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:10px 12px;border-bottom:1px solid var(--border);vertical-align:middle}th{font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);background:#f9fafb}tr:last-child td{border-bottom:none}.table-wrap{overflow-x:auto;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface)}.badge{display:inline-flex;align-items:center;gap:4px;padding:3px 8px;border-radius:999px;font-size:11px;font-weight:700}.badge.ok{background:#dcfce7;color:var(--success)}.badge.off{background:#fee2e2;color:var(--danger)}.badge.warn{background:#fef3c7;color:var(--warning)}.badge.neutral{background:#e5e7eb;color:var(--muted)}.pagination{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 2px;color:var(--muted);font-size:12px}.empty{padding:28px;text-align:center;color:var(--muted)}.error{background:#fee2e2;color:#991b1b;border-radius:8px;padding:10px 12px;font-size:13px}.ok-msg{background:#dcfce7;color:#166534;border-radius:8px;padding:10px 12px;font-size:13px}.stack{display:flex;flex-direction:column;gap:12px}.row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.spacer{flex:1}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12px}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;padding:0;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--muted);cursor:pointer;transition:background .15s ease,color .15s ease,border-color .15s ease}.icon-btn:hover:not(:disabled){background:var(--primary-soft);border-color:#c7d2fe;color:var(--primary-dark)}.icon-btn.danger:hover:not(:disabled){background:#fee2e2;border-color:#fecaca;color:var(--danger)}.icon-btn:disabled{opacity:.45;cursor:not-allowed}.icon-btn:focus-visible,.btn:focus-visible{outline:2px solid var(--primary);outline-offset:2px}tbody tr{transition:background .12s ease}tbody tr:hover{background:#f9fafb}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes scaleIn{0%{opacity:0;transform:scale(.92) translateY(8px)}to{opacity:1;transform:scale(1) translateY(0)}}@keyframes slideIn{0%{opacity:0;transform:translate(110%)}to{opacity:1;transform:translate(0)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
