:root{--fg: #111827;--fg-muted: #6b7280;--bg: #f7f8fa;--bg-elevated: #ffffff;--border: #e5e7eb;--border-strong: #d1d5db;--accent: #2563eb;--accent-hover: #1d4ed8;--danger: #b91c1c;--danger-bg: #fee2e2;--ok: #047857;--ok-bg: #d1fae5;--info-bg: #dbeafe;--neutral-bg: #f3f4f6;--shadow: 0 1px 2px rgba(15, 23, 42, .04);font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,sans-serif;font-size:14px;color:var(--fg);background:var(--bg)}*{box-sizing:border-box}body{margin:0}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}button{font:inherit;cursor:pointer;border:1px solid var(--border-strong);background:var(--bg-elevated);color:var(--fg);padding:.4rem .85rem;border-radius:6px;transition:background 80ms,border-color 80ms}button:hover:not(:disabled){background:var(--neutral-bg)}button:disabled{opacity:.55;cursor:not-allowed}button.primary{background:var(--accent);border-color:var(--accent);color:#fff}button.primary:hover:not(:disabled){background:var(--accent-hover)}button.danger{background:var(--danger);border-color:var(--danger);color:#fff}button.danger:hover:not(:disabled){background:#991b1b}button.link{background:transparent;border:none;color:var(--accent);padding:.2rem 0}button.link:hover{text-decoration:underline;background:transparent}button.small{padding:.25rem .6rem;font-size:.85em}input,select{font:inherit;border:1px solid var(--border-strong);border-radius:6px;padding:.35rem .55rem;background:var(--bg-elevated);color:var(--fg)}input:focus,select:focus{outline:2px solid var(--accent);outline-offset:-1px;border-color:var(--accent)}.app-shell{display:grid;grid-template-columns:230px 1fr;min-height:100vh}.sidebar{background:var(--bg-elevated);border-right:1px solid var(--border);display:flex;flex-direction:column;padding:1rem 0}.sidebar .brand{font-weight:700;font-size:1.05em;padding:0 1rem 1rem;border-bottom:1px solid var(--border);margin-bottom:.5rem}.sidebar nav{flex:1;padding:0 .5rem;display:flex;flex-direction:column;gap:.75rem}.nav-section-title{color:var(--fg-muted);text-transform:uppercase;font-size:.7em;letter-spacing:.06em;padding:.5rem}.nav-link{display:block;color:var(--fg);padding:.45rem .6rem;border-radius:6px}.nav-link:hover{background:var(--neutral-bg);text-decoration:none}.nav-link.active{background:var(--info-bg);color:var(--accent);font-weight:500}.sidebar-footer{border-top:1px solid var(--border);padding:.75rem 1rem .25rem;display:flex;flex-direction:column;gap:.4rem}.me-email{font-size:.9em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.me-role{font-size:.75em}.app-main{padding:1.5rem 2rem;max-width:1400px;width:100%}.page-header{margin-bottom:1.25rem}.page-header .small{font-size:.85em;margin:0}.page-header-row{display:flex;align-items:flex-end;justify-content:space-between;gap:1rem}.page-title{margin:0;font-size:1.4em}.page-actions{display:flex;gap:.5rem}.card{background:var(--bg-elevated);border:1px solid var(--border);border-radius:8px;padding:1rem 1.25rem;margin-bottom:1rem;box-shadow:var(--shadow)}.card-title{margin:0 0 .75rem;font-size:1em;color:var(--fg-muted);text-transform:uppercase;letter-spacing:.04em}.kv-row{display:grid;grid-template-columns:12rem 1fr;gap:.4rem 1rem;padding:.25rem 0;border-bottom:1px dashed var(--border)}.kv-row:last-child{border-bottom:none}.kv-label{color:var(--fg-muted)}.kv-value.mono,.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.table{width:100%;border-collapse:collapse;background:var(--bg-elevated);border:1px solid var(--border);border-radius:8px;overflow:hidden;box-shadow:var(--shadow)}.table th,.table td{padding:.55rem .85rem;text-align:left;border-bottom:1px solid var(--border)}.table th{font-weight:500;color:var(--fg-muted);background:var(--neutral-bg);font-size:.85em;text-transform:uppercase;letter-spacing:.03em}.table tr:last-child td{border-bottom:none}.table tr.linked:hover{background:var(--neutral-bg)}.table td a{color:var(--accent)}.pager{display:flex;gap:.5rem;justify-content:flex-end;margin-top:.75rem}.filter-bar{display:flex;flex-wrap:wrap;gap:.75rem 1rem;align-items:flex-end;padding:.85rem 1rem;background:var(--bg-elevated);border:1px solid var(--border);border-radius:8px;margin-bottom:1rem;box-shadow:var(--shadow)}.filter-field{display:flex;flex-direction:column;gap:.25rem;min-width:12rem}.filter-field>span{color:var(--fg-muted);font-size:.8em;text-transform:uppercase;letter-spacing:.04em}.filter-actions{display:flex;gap:.4rem;margin-left:auto}.badge{display:inline-block;padding:.1rem .55rem;border-radius:999px;font-size:.78em;font-weight:500;background:var(--neutral-bg);color:var(--fg)}.badge.ok{background:var(--ok-bg);color:var(--ok)}.badge.danger{background:var(--danger-bg);color:var(--danger)}.badge.info{background:var(--info-bg);color:var(--accent)}.json-block{background:#0f172a;color:#e2e8f0;padding:.85rem 1rem;border-radius:6px;font-size:.85em;overflow:auto;max-height:32rem}.banner{padding:.6rem .9rem;border-radius:6px;margin-bottom:1rem}.banner.ok{background:var(--ok-bg);color:var(--ok)}.muted{color:var(--fg-muted)}.small{font-size:.85em}.error{color:var(--danger);background:var(--danger-bg);padding:.55rem .8rem;border-radius:6px}.empty{color:var(--fg-muted);text-align:center;padding:1.5rem;border:1px dashed var(--border);border-radius:8px;background:var(--bg-elevated)}.login-shell{min-height:100vh;display:grid;place-items:center;background:var(--bg)}.login-card{background:var(--bg-elevated);border:1px solid var(--border);border-radius:10px;padding:2rem 2.25rem;width:22rem;display:flex;flex-direction:column;gap:.85rem;box-shadow:0 10px 30px #0f172a0f}.login-title{margin:0;font-size:1.3em}.field{display:flex;flex-direction:column;gap:.3rem}.field span{color:var(--fg-muted);font-size:.85em}
