:root{--bg:#f0f4ff;--surface:#fff;--text:#0f172a;--muted:#64748b;--border:#e2e8f0;--primary:#2563eb;--warn:#f59e0b;--crit:#ef4444;--ok:#22c55e;--hover-bg:rgba(99,102,241,.08);--active-bg:rgba(99,102,241,.12);--accent-overview:#6366f1;--accent-queues:#3b82f6;--accent-redis:#ef4444;--accent-clickhouse:#a855f7;--accent-tables:#10b981;--accent-dbmonitor:#0ea5e9}html.dark{--bg:#0c1222;--surface:#151d2e;--text:#f1f5f9;--muted:#94a3b8;--border:#2a3548;--hover-bg:rgba(99,102,241,.15);--active-bg:rgba(99,102,241,.22)}*{box-sizing:border-box}body,html{cursor:default}body{margin:0;font-family:Segoe UI,system-ui,-apple-system,Roboto,sans-serif;background:var(--bg);background-image:radial-gradient(ellipse at 0 0,rgba(99,102,241,.12) 0,transparent 50%),radial-gradient(ellipse at 100% 100%,rgba(168,85,247,.1) 0,transparent 50%);color:var(--text);overflow-x:hidden;min-height:100vh}.btn,.sortable-th,.truncated-text.clickable,[role=button],a,button,label:has(input),select{cursor:pointer}input:not([type]),input[type=search],input[type=text],textarea{cursor:text}a{color:var(--primary)}.btn{min-height:44px;min-width:44px;padding:.5rem 1rem;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--text);cursor:pointer;font-size:.875rem;transition:background .15s,border-color .15s}.btn:hover{border-color:var(--primary)}.btn-primary{background:linear-gradient(135deg,#3b82f6,#6366f1);color:#fff;border:none}.card{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:1rem;box-shadow:0 1px 3px #0000000f}.badge{display:inline-block;padding:.15rem .5rem;border-radius:999px;font-size:.75rem;font-weight:600}.badge-ok{background:#dcfce7;color:#166534}.badge-warn{background:#fef3c7;color:#92400e}.badge-crit{background:#fee2e2;color:#991b1b}html.dark .badge-ok{background:#22c55e33;color:#86efac}html.dark .badge-warn{background:#f59e0b33;color:#fcd34d}html.dark .badge-crit{background:#ef444433;color:#fca5a5}.loading-spinner{width:42px;height:42px;border:3px solid var(--border);border-top:3px solid #7c3aed;border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(1turn)}}.skeleton{background:linear-gradient(90deg,var(--border) 25%,transparent 50%,var(--border) 75%);background-size:200% 100%;animation:shimmer 1.2s infinite;border-radius:6px;min-height:1rem}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.table-scroll{overflow-x:auto}table.data-table{width:100%;border-collapse:collapse;font-size:.875rem}table.data-table td,table.data-table th{padding:.5rem .75rem;border-bottom:1px solid var(--border);text-align:left;white-space:nowrap}.row-warn{background:#f59e0b1f}.row-crit{background:#ef44441f}.alert-banner{padding:.75rem 1rem;margin:0 1rem;border-radius:8px;display:flex;justify-content:space-between;align-items:flex-start;gap:1rem}.alert-banner.warn{background:#fef3c7;color:#92400e}.alert-banner.crit{background:#fee2e2;color:#991b1b}.progress-bar{height:10px;background:var(--border);border-radius:5px;overflow:hidden}.progress-bar>span{display:block;height:100%;background:linear-gradient(90deg,var(--ok),#4ade80);transition:width .3s,background .3s}.progress-bar.warn>span{background:linear-gradient(90deg,var(--warn),#fbbf24)}.progress-bar.crit>span{background:linear-gradient(90deg,var(--crit),#f87171)}.drawer-overlay{position:fixed;inset:0;background:#0006;z-index:200}.drawer{top:0;right:0;width:min(420px,100vw);height:100vh;padding:1.5rem;overflow-y:auto;z-index:201;box-shadow:-4px 0 24px #00000026}.drawer,.toast{position:fixed;background:var(--surface)}.toast{bottom:1rem;right:1rem;padding:.75rem 1rem;border-radius:8px;border:1px solid var(--border);box-shadow:0 4px 12px #00000026;z-index:300}.toast.error{border-color:var(--crit);color:var(--crit)}.cursor-tooltip{position:fixed;z-index:2000;max-width:min(480px,90vw);padding:.5rem .65rem;border-radius:8px;background:#0f172a;color:#f8fafc;font-size:.75rem;line-height:1.4;white-space:pre-wrap;word-break:break-word;box-shadow:0 8px 24px #00000059;pointer-events:none}html.dark .cursor-tooltip{background:#1e293b;border:1px solid #334155}
