:root{--bg:#f5f6f8;--panel:#fff;--border:#e2e5ea;--text:#1c2330;--muted:#6b7280;--primary:#2563eb;--primary-dark:#1d4ed8;--error:#dc2626;--warning:#d97706;--info:#2563eb;--ok:#059669}*{box-sizing:border-box}body,html{margin:0;padding:0;background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;font-size:14px}a{color:var(--primary);text-decoration:none}a:hover{text-decoration:underline}.container{max-width:1100px;margin:0 auto;padding:24px}.layout{display:flex;min-height:100vh}.sidebar{width:220px;background:#111827;color:#e5e7eb;padding:20px 16px}.sidebar h1{font-size:16px;margin:0 0 24px}.sidebar nav a{display:block;color:#d1d5db;padding:8px 10px;border-radius:6px;margin-bottom:4px}.sidebar nav a:hover{background:#1f2937;text-decoration:none}.main{flex:1 1;overflow:auto}.card{background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:18px;margin-bottom:18px}button{background:var(--primary);color:#fff;border:none;padding:8px 14px;border-radius:6px;cursor:pointer;font-size:13px}button:hover{background:var(--primary-dark)}button.secondary{background:#fff;color:var(--text);border:1px solid var(--border)}button:disabled{opacity:.5;cursor:not-allowed}input,select,textarea{font-family:inherit;font-size:13px;padding:7px 9px;border:1px solid var(--border);border-radius:6px;background:#fff}table{width:100%;border-collapse:collapse;font-size:13px}td,th{text-align:left;padding:8px 10px;border-bottom:1px solid var(--border)}th{color:var(--muted);font-weight:600}td.num,th.num{text-align:right;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.badge{display:inline-block;padding:2px 8px;border-radius:999px;font-size:11px;font-weight:600}.badge.error{background:#fee2e2;color:var(--error)}.badge.warning{background:#fef3c7;color:var(--warning)}.badge.info{background:#dbeafe;color:var(--info)}.badge.ok{background:#d1fae5;color:var(--ok)}.badge.muted{background:#f3f4f6;color:var(--muted)}.row{display:flex;gap:12px;align-items:center}.spread{justify-content:space-between}.muted{color:var(--muted)}h2{font-size:18px}.error-text{color:var(--error)}.tooltip{border-bottom:1px dotted var(--muted);cursor:help}