:root{--bg: #0f172a;--panel: #1e293b;--panel-2: #273449;--text: #e2e8f0;--muted: #94a3b8;--accent: #38bdf8;--warn: #fbbf24;--bad: #f87171;--good: #4ade80;--link: #c084fc;--border: #334155;font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;color-scheme:dark}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text)}a{color:var(--accent)}.app{display:grid;grid-template-rows:auto 1fr;height:100vh}header{padding:12px 20px;background:var(--panel);border-bottom:1px solid var(--border);display:flex;flex-wrap:wrap;gap:12px;align-items:center}header h1{font-size:16px;margin:0 16px 0 0;color:var(--accent)}.field{display:flex;flex-direction:column;font-size:12px;color:var(--muted)}.field input,.field select{background:var(--panel-2);color:var(--text);border:1px solid var(--border);border-radius:4px;padding:6px 8px;min-width:180px;font-size:13px}.field input[type=checkbox]{min-width:0;width:14px;height:14px;padding:0;margin:0}button{background:var(--accent);color:#0b1220;border:none;border-radius:4px;padding:8px 14px;font-weight:600;cursor:pointer}button:disabled{opacity:.5;cursor:not-allowed}button.secondary{background:var(--panel-2);color:var(--text);border:1px solid var(--border)}main{display:grid;grid-template-columns:minmax(320px,420px) 1fr;overflow:hidden}.tree-pane,.detail-pane{overflow:auto;padding:12px 16px}.tree-pane{border-right:1px solid var(--border);background:var(--panel)}.tree-node{font-size:13px;line-height:1.4}.tree-node .row{display:flex;align-items:center;gap:6px;padding:3px 4px;border-radius:3px;cursor:pointer}.tree-node .row:hover{background:var(--panel-2)}.tree-node .row.active{background:#1e3a5f}.toggle{width:14px;display:inline-block;text-align:center;color:var(--muted);-webkit-user-select:none;user-select:none}.icon{width:18px;text-align:center}.children{margin-left:14px;border-left:1px dashed var(--border);padding-left:6px}.badge{display:inline-block;font-size:10px;padding:1px 6px;border-radius:999px;margin-left:4px;font-weight:600;letter-spacing:.3px;text-transform:uppercase}.badge.broken{background:#5b1d1d;color:var(--bad)}.badge.link{background:#3b1d5b;color:var(--link)}.badge.user{background:#1d3b5b;color:var(--accent)}.badge.group{background:#5b471d;color:var(--warn)}.badge.app{background:#1d5b34;color:var(--good)}.detail-pane h2{margin-top:0;font-size:16px}.detail-pane h3{margin:18px 0 6px;font-size:13px;text-transform:uppercase;letter-spacing:.5px;color:var(--muted)}.perm{background:var(--panel);border:1px solid var(--border);border-radius:6px;padding:10px 12px;margin-bottom:8px;font-size:13px}.perm.local{border-left:3px solid var(--bad)}.perm.inherited{border-left:3px solid var(--border)}.perm.perm-match{box-shadow:0 0 0 1px #4ade8099}.perm-header{display:flex;justify-content:space-between;gap:8px;align-items:baseline;flex-wrap:wrap}.perm-meta{color:var(--muted);font-size:11px}.access-chip{min-width:18px;text-align:center;font-weight:700}.access-chip.ok{color:var(--good)}.access-chip.no{color:var(--bad)}.perm pre{background:#0b1220;padding:8px;border-radius:4px;overflow:auto;font-size:11px;margin:6px 0 0}.members{margin-top:6px;padding-left:8px;border-left:2px solid var(--border);color:var(--muted);font-size:12px}.members li{margin:2px 0}.warn-banner{background:#5b1d1d;color:var(--bad);padding:8px 12px;border-radius:4px;margin-bottom:12px;font-size:12px}.empty{color:var(--muted);font-size:13px}
