:root{color-scheme:dark;--bg:#07111f;--panel:#102033;--panel-2:#0b1929;--line:rgba(151,176,205,.18);--text:#ecf5ff;--muted:#8ea5bf;--blue:#42a5ff;--green:#43d6a0;--red:#ff7272;--yellow:#f2c463}
*{box-sizing:border-box}
[hidden]{display:none!important}
body{margin:0;min-width:720px;min-height:520px;color:var(--text);background:radial-gradient(circle at 75% 0,rgba(45,130,220,.18),transparent 35%),var(--bg);font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;font-size:13px}
.app-header{display:flex;justify-content:space-between;align-items:center;padding:22px 28px;border-bottom:1px solid var(--line);background:rgba(5,14,25,.76)}
h1{margin:5px 0 2px;font-size:24px}
h2{margin:0;font-size:19px}
h3{margin:0 0 10px;font-size:16px}
h4{margin:0 0 8px;font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.08em}
.app-header p{margin:0;color:var(--muted);font-size:11px}
.eyebrow{color:var(--blue);font-size:10px;font-weight:800;letter-spacing:.17em}
main{padding:18px 28px 30px}
.panel{border:1px solid var(--line);border-radius:14px;background:rgba(16,32,51,.82)}
.toolbar{display:flex;align-items:end;gap:10px;padding:14px 16px;flex-wrap:wrap}
.toolbar label{display:grid;gap:6px;min-width:240px;color:var(--muted);font-size:11px}
.privilege{display:grid;gap:6px;color:var(--muted);font-size:11px;margin-right:auto}
select,input,textarea,.button,.mini{border:1px solid var(--line);border-radius:8px;color:var(--text);background:var(--panel-2);padding:8px 10px;font:inherit}
textarea{width:100%;resize:vertical;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px}
select:focus-visible,input:focus-visible,textarea:focus-visible,button:focus-visible{outline:2px solid var(--blue);outline-offset:1px}
.button,.mini{cursor:pointer}
.button.primary{background:linear-gradient(135deg,#267dd1,#3867e8);border-color:#458cea}
.button.danger{border-color:rgba(255,114,114,.45);color:#ffb4b4;background:rgba(255,114,114,.08)}
.button.ghost{background:transparent}
.button:disabled,.mini:disabled{opacity:.4;cursor:not-allowed}
.sudo-mark{font-size:9px;color:var(--yellow);letter-spacing:.04em;text-transform:uppercase}
.mini{padding:4px 7px;font-size:10px}
.mini.danger{border-color:rgba(255,114,114,.35);color:#ffaaaa}
.status{min-height:18px;margin:10px 2px;color:var(--muted);font-size:12px}
.status.error{color:var(--red)}
.layout{display:grid;grid-template-columns:minmax(330px,5fr) minmax(380px,7fr);gap:14px;align-items:start}
.list{display:flex;flex-direction:column;min-height:420px}
.list-head{display:flex;gap:8px;padding:12px;border-bottom:1px solid var(--line);flex-wrap:wrap}
.list-head input{flex:1;min-width:120px}
.table-wrap{overflow:auto}
.list .table-wrap{max-height:calc(100vh - 290px);min-height:240px}
table{width:100%;border-collapse:collapse;font-size:11px}
th,td{padding:9px 10px;text-align:left;border-bottom:1px solid var(--line);vertical-align:top}
th{color:var(--muted);background:var(--panel-2);font-size:10px;font-weight:600}
thead th{position:sticky;top:0;z-index:1}
tbody tr:last-child td{border-bottom:0}
tbody tr.selected{background:rgba(66,165,255,.1)}
.row-button{all:unset;cursor:pointer;display:grid;gap:2px;width:100%}
.row-button:focus-visible{outline:2px solid var(--blue);outline-offset:2px;border-radius:4px}
.row-button small{color:var(--yellow);font-size:10px}
.sub{display:block;color:var(--muted);font-size:10px;font-weight:400}
.empty{text-align:center;color:var(--muted);padding:32px}
.note{margin:0;padding:10px 12px;color:var(--muted);font-size:11px;border-top:1px solid var(--line)}
.note:empty{display:none}
.badge{display:inline-block;padding:2px 7px;border-radius:999px;font-size:10px;white-space:nowrap;background:rgba(142,165,191,.14);color:var(--muted)}
.badge.ok{background:rgba(67,214,160,.12);color:var(--green)}
.badge.warn{background:rgba(242,196,99,.13);color:var(--yellow)}
.badge.danger{background:rgba(255,114,114,.13);color:var(--red)}
.badges{display:flex;gap:4px;flex-wrap:wrap}
.detail{padding:16px 18px;min-height:420px}
.empty-detail{color:var(--muted);text-align:center;padding:80px 20px}
.detail-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;margin-bottom:10px}
.detail-head p{margin:4px 0 0;color:var(--muted);font-size:11px}
.notice{margin:8px 0;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:rgba(66,165,255,.06);color:var(--muted);font-size:11px}
.notice p{margin:0 0 6px}
.notice.warn{border-color:rgba(242,196,99,.35);background:rgba(242,196,99,.07);color:#f5d999}
.tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);margin:12px 0;flex-wrap:wrap}
.tabs [role=tab]{border:0;border-bottom:2px solid transparent;background:transparent;color:var(--muted);padding:8px 10px;font:inherit;cursor:pointer}
.tabs [role=tab][aria-selected=true]{color:var(--text);border-bottom-color:var(--blue)}
.tab-panel{display:grid;gap:12px}
.sub-panel{border:1px solid var(--line);border-radius:10px;padding:12px;background:rgba(11,25,41,.5)}
.info-grid{display:grid;grid-template-columns:minmax(140px,auto) 1fr;gap:6px 14px;margin:0;font-size:12px}
.info-grid dt{color:var(--muted)}
.info-grid dd{margin:0;word-break:break-word}
.inline-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.hint{margin:0;color:var(--muted);font-size:11px;line-height:1.45}
.error{margin:0;color:var(--red);font-size:12px}
.muted{color:var(--muted)}
.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:10px;word-break:break-all}
.chip-list{list-style:none;display:flex;flex-wrap:wrap;gap:6px;margin:8px 0 0;padding:0}
.chip-list li{display:flex;gap:6px;align-items:center;border:1px solid var(--line);border-radius:999px;padding:3px 4px 3px 10px;font-size:11px}
.chip-list li.muted{border:0;padding:0}
.details-list{margin:6px 0;padding-left:18px;color:var(--muted);font-size:11px}
.policy-table th[scope=row]{background:transparent;color:var(--text);font-size:11px;min-width:150px}
.policy-table td{vertical-align:middle}
.segmented{display:inline-flex;border:1px solid var(--line);border-radius:8px;overflow:hidden}
.segmented label{position:relative;cursor:pointer}
.segmented input{position:absolute;opacity:0;inset:0;margin:0;cursor:pointer}
.segmented span{display:block;padding:6px 9px;font-size:11px;color:var(--muted);border-right:1px solid var(--line)}
.segmented label:last-child span{border-right:0}
.segmented input:checked+span{background:rgba(66,165,255,.22);color:var(--text)}
.segmented input:focus-visible+span{outline:2px solid var(--blue);outline-offset:-2px}
.segmented input:disabled+span{opacity:.55;cursor:not-allowed}
tr.invalid td{color:var(--yellow)}
dialog{border:1px solid var(--line);border-radius:14px;background:#0d1b2d;color:var(--text);padding:20px 22px;width:min(560px,calc(100vw - 40px));max-height:calc(100vh - 40px);overflow:auto}
dialog::backdrop{background:rgba(2,8,16,.7)}
dialog form{display:grid;gap:12px}
dialog label{display:grid;gap:6px;color:var(--muted);font-size:11px}
dialog label.check,.check{display:flex;align-items:center;gap:8px}
dialog p{margin:0;font-size:12px;line-height:1.45}
dialog fieldset{border:1px solid var(--line);border-radius:10px;display:grid;gap:10px;padding:12px}
dialog legend{color:var(--muted);font-size:11px;padding:0 6px}
#createDialog{width:min(720px,calc(100vw - 40px))}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px 14px}
.actions{display:flex;justify-content:flex-end;gap:8px;margin-top:4px}
code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px}
@media(max-width:1100px){.layout{grid-template-columns:1fr}.list .table-wrap{max-height:340px}}
@media(max-width:860px){main,.app-header{padding-left:18px;padding-right:18px}.form-grid{grid-template-columns:1fr}.toolbar label{min-width:180px}}
