:root{--font:Inter, "Inter var", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--mono:"JetBrains Mono", "Cascadia Code", "SF Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--bg:#fff;--bg-sidebar:#f7f7f5;--bg-subtle:#fafaf9;--bg-hover:#37352f0e;--bg-active:#37352f17;--bg-input:#fff;--bg-elevated:#fff;--text:#2f2e2b;--text-muted:#77756f;--text-faint:#a8a6a0;--border:#ebeae6;--border-strong:#dcdad4;--accent:#2b59c3;--accent-hover:#234aa6;--accent-soft:#2b59c317;--accent-text:#fff;--allow:#18794e;--allow-soft:#18794e1a;--deny:#c0362c;--deny-soft:#c0362c17;--pending:#a86b00;--pending-strong:#d99a1e;--pending-soft:#e9aa2824;--row-changed:#ecb22e1a;--row-added:#18794e0f;--row-removed:#c0362c0d;--server:#2b59c3;--world:#6b4fbb;--shadow-pop:0 1px 2px #0f0f0f0a, 0 8px 24px #0f0f0f1a;--scrim:#0f0f0f47;--radius:6px;--radius-lg:8px;--sidebar-w:256px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#191918;--bg-sidebar:#1f1f1e;--bg-subtle:#1d1d1c;--bg-hover:#ffffff0e;--bg-active:#ffffff17;--bg-input:#1f1f1e;--bg-elevated:#242423;--text:#e8e6e1;--text-muted:#9d9b95;--text-faint:#6c6a65;--border:#2e2e2c;--border-strong:#3b3b38;--accent:#7098f2;--accent-hover:#86a8f5;--accent-soft:#7098f224;--accent-text:#0f1320;--allow:#4cc38a;--allow-soft:#4cc38a21;--deny:#f2766b;--deny-soft:#f2766b21;--pending:#e6b450;--pending-strong:#e6b450;--pending-soft:#e6b45026;--row-changed:#e6b45014;--row-added:#4cc38a12;--row-removed:#f2766b0f;--server:#7098f2;--world:#a58ff0;--shadow-pop:0 1px 2px #0000004d, 0 10px 30px #00000073;--scrim:#00000080;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}:root[data-theme=dark]{--bg:#191918;--bg-sidebar:#1f1f1e;--bg-subtle:#1d1d1c;--bg-hover:#ffffff0e;--bg-active:#ffffff17;--bg-input:#1f1f1e;--bg-elevated:#242423;--text:#e8e6e1;--text-muted:#9d9b95;--text-faint:#6c6a65;--border:#2e2e2c;--border-strong:#3b3b38;--accent:#7098f2;--accent-hover:#86a8f5;--accent-soft:#7098f224;--accent-text:#0f1320;--allow:#4cc38a;--allow-soft:#4cc38a21;--deny:#f2766b;--deny-soft:#f2766b21;--pending:#e6b450;--pending-strong:#e6b450;--pending-soft:#e6b45026;--row-changed:#e6b45014;--row-added:#4cc38a12;--row-removed:#f2766b0f;--server:#7098f2;--world:#a58ff0;--shadow-pop:0 1px 2px #0000004d, 0 10px 30px #00000073;--scrim:#00000080;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*,:before,:after{box-sizing:border-box}html,body,#root{height:100%}body{background:var(--bg);color:var(--text);font-family:var(--font);font-feature-settings:"cv11", "ss01";-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility;margin:0;font-size:14px;line-height:1.5}a{color:inherit;text-decoration:none}a:hover{text-decoration:underline;-webkit-text-decoration-color:var(--text-faint);text-decoration-color:var(--text-faint);text-underline-offset:3px}button{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--accent);outline-offset:1px;border-radius:4px}h1,h2,h3,p{margin:0}kbd{font-family:var(--font);border:1px solid var(--border-strong);color:var(--text-muted);background:var(--bg);border-bottom-width:2px;border-radius:4px;padding:1px 5px;font-size:11px}mark{color:var(--accent);background:0 0;font-weight:600}.mono{font-family:var(--mono);letter-spacing:-.01em;font-size:.92em}.muted{color:var(--text-muted)}.small{font-size:12.5px}.num{text-align:right;font-variant-numeric:tabular-nums}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}.app{grid-template-columns:var(--sidebar-w) minmax(0, 1fr);height:100%;display:grid}.main{flex-direction:column;min-width:0;display:flex;overflow-y:auto}.content{flex:1;padding:28px 48px 96px}.page{max-width:1040px;margin:0 auto}.page-wide{max-width:1180px}.sidebar{background:var(--bg-sidebar);border-right:1px solid var(--border);flex-direction:column;gap:4px;padding:14px 10px 16px;display:flex;overflow-y:auto}.sidebar-head{padding:4px 8px 10px}.brand{letter-spacing:-.01em;align-items:center;gap:9px;font-size:14.5px;font-weight:600;display:flex}.brand-mark{background:var(--accent);border-radius:5px;flex:none;width:18px;height:18px;position:relative}.brand-mark:after{content:"";background:var(--bg-sidebar);opacity:.9;border-radius:2px;position:absolute;inset:5px}.session{flex-direction:column;margin-top:8px;padding-left:27px;line-height:1.35;display:flex}.session-actor{font-weight:500}.session-exp{color:var(--text-muted);font-size:12px}.session-exp.is-warn{color:var(--pending)}.quick-btn{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg);width:100%;color:var(--text-muted);cursor:pointer;text-align:left;align-items:center;gap:8px;margin-bottom:6px;padding:6px 8px;display:flex}.quick-btn span{white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;overflow:hidden}.quick-btn:hover{border-color:var(--border-strong);color:var(--text)}.nav{flex-direction:column;gap:1px;display:flex}.nav-link{border-radius:var(--radius);color:var(--text-muted);align-items:center;gap:9px;padding:5px 8px;font-weight:500;display:flex}.nav-link:hover{background:var(--bg-hover);color:var(--text);text-decoration:none}.nav-link.is-active{background:var(--bg-active);color:var(--text)}.side-section{margin-top:14px}.side-section-head{color:var(--text-muted);justify-content:space-between;align-items:center;padding:0 4px 4px 8px;font-size:12px;font-weight:600;display:flex}.side-list{margin:0;padding:0;list-style:none}.side-item{border-radius:var(--radius);color:var(--text);justify-content:space-between;align-items:center;gap:8px;min-height:28px;padding:4px 8px;display:flex}.side-item:hover{background:var(--bg-hover);text-decoration:none}.side-item.is-active{background:var(--bg-active);font-weight:500}.side-item-name{text-overflow:ellipsis;white-space:nowrap;align-items:center;gap:6px;min-width:0;display:flex;overflow:hidden}.side-item-weight{color:var(--text-faint);font-variant-numeric:tabular-nums;flex:none;font-size:12px}.side-item-created .side-item-name{color:var(--allow)}.side-item-deleted .side-item-name{color:var(--deny);text-decoration:line-through}.side-item-hint{color:var(--text-muted)}.side-note{color:var(--text-muted);padding:4px 8px;font-size:12px}.dot-pending{background:var(--pending-strong);border-radius:50%;flex:none;width:6px;height:6px}.side-add{border-radius:var(--radius);width:100%;color:var(--text-muted);cursor:pointer;text-align:left;background:0 0;border:0;align-items:center;gap:6px;padding:4px 8px;display:flex}.side-add:hover{background:var(--bg-hover);color:var(--text)}.search-field{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-input);color:var(--text-faint);align-items:center;gap:7px;padding:0 8px;display:flex}.search-field:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.search-field-side{margin:0 0 4px}.search-field-lg{padding:2px 12px}.search-field-lg .input-bare{height:40px;font-size:15px}.theme-switch{gap:2px;margin-top:auto;padding-top:16px;padding-left:4px;display:flex}.theme-opt{border-radius:var(--radius);width:28px;height:26px;color:var(--text-faint);cursor:pointer;background:0 0;border:0;place-items:center;display:grid}.theme-opt:hover{background:var(--bg-hover);color:var(--text)}.theme-opt.is-active{background:var(--bg-active);color:var(--text)}.topbar{z-index:20;background:color-mix(in srgb, var(--bg) 88%, transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid #0000;justify-content:space-between;align-items:center;gap:16px;height:46px;padding:0 16px 0 20px;display:flex;position:sticky;top:0}.crumbs{min-width:0;color:var(--text-muted);white-space:nowrap;align-items:center;display:flex;overflow:hidden}.crumb{align-items:center;min-width:0;display:inline-flex}.crumb a{border-radius:4px;padding:2px 6px}.crumb a:hover{background:var(--bg-hover);color:var(--text);text-decoration:none}.crumb>span{text-overflow:ellipsis;padding:2px 6px;overflow:hidden}.crumb-current{color:var(--text)}.crumb-sep{color:var(--text-faint);flex:none}.pending-btn{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg);height:30px;color:var(--text-muted);cursor:pointer;flex:none;align-items:center;gap:7px;padding:0 6px 0 10px;font-weight:500;display:inline-flex}.pending-btn:hover{border-color:var(--border-strong);color:var(--text)}.pending-btn.has-changes{border-color:color-mix(in srgb, var(--pending-strong) 55%, var(--border));background:var(--pending-soft);color:var(--text)}.pending-btn.has-changes .count-badge{background:var(--pending-strong);color:#1d1400}.count-badge{background:var(--bg-active);min-width:20px;height:20px;color:var(--text-muted);font-variant-numeric:tabular-nums;border-radius:10px;place-items:center;padding:0 6px;font-size:12px;font-weight:600;display:inline-grid}.page-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:24px;margin:18px 0 24px;display:flex}.page-title-wrap{flex-direction:column;flex:320px;gap:2px;min-width:0;display:flex}.page-kicker{color:var(--text-muted);font-size:13px}.page-title{letter-spacing:-.02em;font-size:30px;font-weight:700;line-height:1.2}.page-title.mono{letter-spacing:-.02em;font-size:26px}.page-sub{flex-wrap:wrap;align-items:center;gap:10px;max-width:72ch;margin-top:4px;display:flex}.page-head-actions{flex-wrap:wrap;gap:4px;display:flex}.title-input{letter-spacing:-.02em;border-radius:var(--radius);color:var(--text);background:0 0;border:1px solid #0000;width:100%;max-width:560px;margin-left:-7px;padding:2px 6px;font-size:26px;font-weight:700;line-height:1.25}.title-input:hover:not(:disabled){background:var(--bg-hover)}.title-input:focus{border-color:var(--accent);background:var(--bg-input);box-shadow:0 0 0 3px var(--accent-soft);outline:none}.back-link{color:var(--text-muted);align-items:center;gap:6px;margin-top:8px;font-size:13px;display:inline-flex}.section{margin-top:36px}.section-head{border-bottom:1px solid var(--border);align-items:baseline;gap:10px;margin-bottom:12px;padding-bottom:8px;display:flex}.section-title{letter-spacing:-.01em;font-size:16px;font-weight:600}.section-hint{color:var(--text-muted);font-size:13px}.banner{border-radius:var(--radius-lg);border:1px solid var(--border);background:var(--bg-subtle);justify-content:space-between;align-items:center;gap:12px;margin:12px 0;padding:10px 12px 10px 14px;display:flex}.banner>span{flex:1}.banner-danger{background:var(--deny-soft);border-color:color-mix(in srgb, var(--deny) 25%, transparent)}.banner-added{background:var(--allow-soft);border-color:color-mix(in srgb, var(--allow) 25%, transparent)}.banner-changed{background:var(--pending-soft);border-color:color-mix(in srgb, var(--pending-strong) 35%, transparent)}.banner svg{color:var(--pending);flex:none}.btn{border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--bg);height:32px;color:var(--text);cursor:pointer;white-space:nowrap;justify-content:center;align-items:center;gap:6px;padding:0 12px;font-weight:500;text-decoration:none;display:inline-flex}.btn:hover{background:var(--bg-hover);text-decoration:none}.btn:disabled{opacity:.55;cursor:default}.btn-sm{height:28px;padding:0 10px;font-size:13px}.btn-primary{background:var(--accent);border-color:var(--accent);color:var(--accent-text)}.btn-primary:hover:not(:disabled){background:var(--accent-hover);border-color:var(--accent-hover)}.btn-danger{background:var(--deny);border-color:var(--deny);color:#fff}.btn-danger:hover:not(:disabled){background:color-mix(in srgb, var(--deny) 88%, #000)}.btn-ghost{color:var(--text-muted);background:0 0;border-color:#0000}.btn-ghost:hover{color:var(--text)}.btn-danger-text:hover{color:var(--deny);background:var(--deny-soft)}.icon-btn{border-radius:var(--radius);width:28px;height:28px;color:var(--text-faint);cursor:pointer;background:0 0;border:0;flex:none;place-items:center;display:inline-grid}.icon-btn:hover{background:var(--bg-hover);color:var(--text)}.icon-btn-sm{width:22px;height:22px}.icon-btn-danger:hover{color:var(--deny);background:var(--deny-soft)}.icon-btn-accent{color:var(--accent)}.icon-btn-accent:hover{background:var(--accent-soft);color:var(--accent)}.input{border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--bg-input);width:100%;height:32px;color:var(--text);font:inherit;min-width:0;padding:0 10px}.input::placeholder{color:var(--text-faint)}.input:hover:not(:disabled):not(:focus){border-color:color-mix(in srgb, var(--border-strong) 70%, var(--text-faint))}.input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);outline:none}.input:disabled{background:var(--bg-subtle);color:var(--text-muted)}.input.mono{font-family:var(--mono);font-size:13px}.input-sm{height:28px;padding:0 8px;font-size:13px}.input-bare{background:0 0;border:0;height:30px;padding:0}.input-bare:focus{box-shadow:none}.input-invalid,.input-invalid:focus{border-color:var(--deny);box-shadow:0 0 0 3px var(--deny-soft)}.textarea{resize:vertical;height:auto;padding:8px 10px;line-height:1.45}.select{cursor:pointer;width:auto;min-width:200px;padding-right:28px}.form{flex-direction:column;gap:14px;display:flex}.field{flex-direction:column;gap:5px;min-width:0;display:flex}.field-label{color:var(--text);align-items:baseline;gap:8px;font-size:13px;font-weight:500;display:flex}.field-hint{color:var(--text-faint);font-size:12px;font-weight:400}.field-was{color:var(--pending);font-size:12px}.field-error{color:var(--deny);font-size:12px}.field.is-changed .input{border-color:color-mix(in srgb, var(--pending-strong) 60%, var(--border-strong));background:color-mix(in srgb, var(--pending-soft) 60%, var(--bg-input))}.settings-grid{grid-template-columns:140px minmax(0,1fr);gap:16px;display:grid}.meta-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px 20px;display:grid}.meta-actions{grid-column:1/-1}.segmented{border-radius:var(--radius);background:var(--bg-hover);gap:2px;padding:2px;display:inline-flex}.segmented-opt{color:var(--text-muted);cursor:pointer;background:0 0;border:0;border-radius:5px;padding:3px 10px;font-size:13px}.segmented-opt:hover{color:var(--text)}.segmented-opt.is-active{background:var(--bg);color:var(--text);box-shadow:0 0 0 1px var(--border-strong)}.badge{white-space:nowrap;background:var(--bg-active);height:20px;color:var(--text-muted);border-radius:10px;align-items:center;padding:0 7px;font-size:12px;font-weight:500;display:inline-flex}.badge-warn{background:var(--pending-soft);color:var(--pending)}.badge-danger{background:var(--deny-soft);color:var(--deny)}.badge-ok{background:var(--allow-soft);color:var(--allow)}.table{border-collapse:separate;border-spacing:0;table-layout:auto;width:100%}.node-table .table{table-layout:fixed}.table th{text-align:left;color:var(--text-muted);border-bottom:1px solid var(--border);white-space:nowrap;padding:6px 10px;font-size:12.5px;font-weight:500}.table td{border-bottom:1px solid var(--border);vertical-align:middle;padding:7px 10px}.table-compact td{padding:8px 10px}.table tbody tr{transition:background-color .12s}.table tbody tr:hover{background:var(--bg-subtle)}.row-link{cursor:pointer}.table-empty{text-align:center;color:var(--text-muted);padding:28px 10px!important}.cell-actions{justify-content:flex-end;gap:2px;display:flex}td.cell-actions{text-align:right;white-space:nowrap;display:table-cell}.cell-clip{text-overflow:ellipsis;white-space:nowrap;max-width:320px;overflow:hidden}.th-sort{color:inherit;font:inherit;cursor:pointer;background:0 0;border:0;align-items:center;gap:4px;padding:0;display:inline-flex}.th-sort:hover,.th-sort.is-active{color:var(--text)}.table-toolbar{align-items:center;gap:12px;margin-bottom:8px;display:flex}.table-toolbar .search-field{flex:0 340px}.row-changed,.row-added,.row-removed{position:relative}.row-changed>td:first-child,.row-added>td:first-child,.row-removed>td:first-child{box-shadow:inset 3px 0 0 var(--row-bar)}.row-changed{--row-bar:var(--pending-strong);background:var(--row-changed)}.row-added{--row-bar:var(--allow);background:var(--row-added)}.row-removed{--row-bar:var(--deny);background:var(--row-removed)}.table tbody tr.row-changed:hover{background:color-mix(in srgb, var(--row-changed) 100%, var(--bg-hover))}.row-removed .perm,.row-removed .group-link{text-decoration:line-through;-webkit-text-decoration-color:var(--deny);text-decoration-color:var(--deny);color:var(--text-muted)}.row-removed .value-pill,.row-removed .duration-chip,.row-removed .chip,.row-removed .ctx-global{opacity:.55}.perm-cell{align-items:center;gap:4px;min-width:0;display:flex}.perm{overflow-wrap:break-word;min-width:0}.col-value{width:132px}.col-expiry{width:200px}.col-context{width:26%}.col-actions{width:72px}.row-hover-action{width:20px;height:20px;color:var(--text-faint);opacity:0;border-radius:4px;flex:none;place-items:center;display:inline-grid}tr:hover .row-hover-action,.row-hover-action:focus-visible{opacity:1}.row-hover-action:hover{background:var(--bg-hover);color:var(--text)}.row-was{color:var(--pending);margin-top:1px;font-size:12px}.add-row td{vertical-align:top;border-bottom:0;padding-top:10px}.add-row:hover{background:0 0!important}.value-pill{cursor:pointer;white-space:nowrap;border:1px solid #0000;border-radius:12px;align-items:center;gap:6px;height:24px;padding:0 9px 0 8px;font-size:12.5px;font-weight:500;display:inline-flex}.value-pill:disabled{cursor:default}.value-pill.is-allow{background:var(--allow-soft);color:var(--allow)}.value-pill.is-deny{background:var(--deny-soft);color:var(--deny)}.value-pill:hover:not(:disabled){border-color:currentColor}.value-dot{background:currentColor;border-radius:50%;width:7px;height:7px}.value-text.is-allow{color:var(--allow)}.value-text.is-deny{color:var(--deny)}.duration-chip{border-radius:var(--radius);max-width:100%;height:26px;color:var(--text);cursor:pointer;white-space:nowrap;background:0 0;border:1px solid #0000;align-items:center;gap:6px;padding:0 8px;font-size:13px;display:inline-flex;overflow:hidden}.duration-chip svg{color:var(--text-faint);flex:none}.duration-chip:hover:not(:disabled){background:var(--bg-hover)}.duration-chip:disabled{cursor:default}.duration-chip.is-forever{color:var(--text-muted)}.duration-chip.is-expired{color:var(--deny)}.duration-date{color:var(--text-faint);text-overflow:ellipsis;font-size:12px;overflow:hidden}.duration-editing{flex-direction:column;gap:3px;display:flex}.duration-preview{color:var(--text-muted);font-size:11.5px;line-height:1.3}.duration-preview.is-error{color:var(--deny)}.ctx{flex-wrap:wrap;align-items:center;gap:4px;min-height:26px;display:flex}.ctx-global{color:var(--text-faint);padding:0 2px;font-size:13px}.ctx-input{width:170px}.ctx-inline{vertical-align:middle;gap:4px;margin-left:8px;display:inline-flex}.chip{height:22px;font-family:var(--mono);background:var(--bg-active);white-space:nowrap;border-radius:4px;align-items:center;font-size:12px;display:inline-flex;overflow:hidden}.chip-key{color:var(--chip-color,var(--text-muted));padding:0 4px 0 6px}.chip-key:after{content:"=";opacity:.6;margin-left:2px}.chip-val{color:var(--text);padding-right:6px}.chip-server{--chip-color:var(--server);background:color-mix(in srgb, var(--server) 10%, transparent)}.chip-world{--chip-color:var(--world);background:color-mix(in srgb, var(--world) 10%, transparent)}.chip-x{width:18px;height:22px;color:var(--text-faint);cursor:pointer;background:0 0;border:0;place-items:center;margin-left:-4px;display:grid}.chip-x:hover{color:var(--deny)}.chip-add{border:1px dashed var(--border-strong);width:22px;height:22px;color:var(--text-faint);cursor:pointer;opacity:0;background:0 0;border-radius:4px;place-items:center;display:grid}tr:hover .chip-add,.glist-item:hover .chip-add,.glist-add .chip-add,.add-row .chip-add,.chip-add:focus-visible{opacity:1}.chip-add:hover{color:var(--accent);border-color:var(--accent)}.suggest{z-index:1000;background:var(--bg-elevated);border:1px solid var(--border-strong);border-radius:var(--radius-lg);max-width:min(520px,100vw - 24px);max-height:300px;box-shadow:var(--shadow-pop);margin:4px 0 0;padding:4px;list-style:none;position:fixed;overflow-y:auto}.suggest-above{transform:translateY(calc(-100% - 8px))}.suggest-item{cursor:pointer;border-radius:5px;justify-content:space-between;align-items:center;gap:12px;padding:5px 8px;font-size:13px;display:flex}.suggest-item.is-active{background:var(--bg-active)}.suggest-label{font-family:var(--mono);text-overflow:ellipsis;white-space:nowrap;font-size:12.5px;overflow:hidden}.suggest-hint{color:var(--text-faint);flex:none;font-size:12px}.suggest-empty{color:var(--text-muted);padding:6px 8px;font-size:13px}.glist-items{margin:0;padding:0;list-style:none}.glist-item,.glist-add{border-bottom:1px solid var(--border);grid-template-columns:minmax(0,1fr) 200px minmax(0,26%) 72px;align-items:center;gap:12px;padding:6px 10px;display:grid}.glist-item.row-changed,.glist-item.row-added,.glist-item.row-removed{box-shadow:inset 3px 0 0 var(--row-bar)}.glist-name{flex-wrap:wrap;align-items:center;gap:10px;min-width:0;display:flex}.group-link{font-weight:500}.glist-empty{border-bottom:1px solid var(--border);padding:10px}.glist-add{border-bottom:0;grid-template-columns:minmax(0,1fr) 200px minmax(0,26%) 72px;padding-top:10px}.glist-add-picker{max-width:320px}.primary-row{border-radius:var(--radius-lg);background:var(--bg-subtle);border:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:12px;margin-top:16px;padding:10px;display:flex}.primary-row.is-changed{background:var(--row-changed);border-color:color-mix(in srgb, var(--pending-strong) 35%, var(--border))}.primary-label{font-weight:500}.overlay{z-index:200;background:var(--scrim);place-items:start center;padding:12vh 16px 16px;animation:.12s ease-out fade;display:grid;position:fixed;inset:0}.modal{background:var(--bg-elevated);border:1px solid var(--border);width:100%;box-shadow:var(--shadow-pop);border-radius:10px;flex-direction:column;max-height:76vh;animation:.14s ease-out rise;display:flex}.modal:focus{outline:none}.modal-head{justify-content:space-between;align-items:center;padding:14px 14px 4px 20px;display:flex}.modal-title{font-size:16px;font-weight:600}.modal-body{flex-direction:column;gap:14px;padding:8px 20px 16px;display:flex;overflow-y:auto}.modal-foot{border-top:1px solid var(--border);justify-content:flex-end;gap:8px;padding:12px 20px 16px;display:flex}.confirm-text{color:var(--text-muted)}.drawer-layer{z-index:100;position:fixed;inset:0}.drawer-scrim{background:var(--scrim);opacity:.5;animation:.15s ease-out fade;position:absolute;inset:0}.drawer{background:var(--bg-elevated);border-left:1px solid var(--border);width:min(480px,100vw);box-shadow:var(--shadow-pop);flex-direction:column;animation:.18s ease-out slide;display:flex;position:absolute;top:0;bottom:0;right:0}.drawer:focus{outline:none}.drawer-head{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:14px 14px 12px 20px;display:flex}.drawer-title{align-items:center;gap:8px;font-size:16px;font-weight:600;display:flex}.drawer-body{flex:1;padding:8px 20px 24px;overflow-y:auto}.drawer-foot{border-top:1px solid var(--border);justify-content:space-between;gap:8px;padding:12px 20px;display:flex}@keyframes fade{0%{opacity:0}}@keyframes rise{0%{opacity:0;transform:translateY(6px)scale(.99)}}@keyframes slide{0%{opacity:0;transform:translate(24px)}}.change-bucket{margin-top:18px}.bucket-title{margin-bottom:6px;font-size:13px;font-weight:600}.bucket-title a{font-family:var(--mono);font-size:13px}.change-list{border:1px solid var(--border);border-radius:var(--radius-lg);margin:0;padding:0;list-style:none}.change-item{align-items:flex-start;gap:8px;padding:10px 8px 10px 12px;display:flex}.change-item+.change-item{border-top:1px solid var(--border)}.change-body{flex-direction:column;flex:1;gap:3px;min-width:0;display:flex}.change-title{flex-wrap:wrap;align-items:center;gap:4px;font-weight:500;display:flex}.change-title:before{content:"";background:var(--pending-strong);border-radius:2px;flex:none;width:7px;height:7px;margin-right:4px}.change-added:before{background:var(--allow)}.change-removed:before{background:var(--deny)}.diff{flex-wrap:wrap;align-items:baseline;gap:6px;font-size:13px;display:flex}.diff-before{color:var(--deny);text-decoration:line-through;-webkit-text-decoration-color:color-mix(in srgb, var(--deny) 60%, transparent);text-decoration-color:color-mix(in srgb, var(--deny) 60%, transparent);overflow-wrap:anywhere}.diff-after{color:var(--allow);overflow-wrap:anywhere}.diff-none{color:var(--text-muted)}.diff-removed{color:var(--deny);font-weight:500}.diff-arrow{color:var(--text-faint)}.diff-field{grid-template-columns:110px minmax(0,1fr);align-items:baseline;gap:8px;display:grid}.diff-label{color:var(--text-muted);font-size:12.5px}.summary{border:1px solid var(--border);border-radius:var(--radius-lg);margin:0}.summary-row{justify-content:space-between;padding:7px 12px;display:flex}.summary-row+.summary-row{border-top:1px solid var(--border)}.summary dt{color:var(--text-muted)}.summary dd{font-variant-numeric:tabular-nums;margin:0;font-weight:600}.success{text-align:center;flex-direction:column;align-items:stretch;gap:12px;display:flex}.success-code{letter-spacing:.08em;color:var(--accent);padding-top:8px;font-size:44px;font-weight:600}.success-ops{margin-top:-8px}.success-note{color:var(--text-muted);text-align:left;font-size:13px}.command+p{margin-top:8px}.command{border:1px solid var(--border-strong);border-radius:var(--radius-lg);background:var(--bg-subtle);text-align:left;align-items:center;gap:10px;padding:6px 6px 6px 14px;display:flex}.command-text{white-space:nowrap;flex:1;font-size:13.5px;overflow-x:auto}.command-lg .command-text{font-size:15px}.empty{text-align:center;flex-direction:column;align-items:center;gap:6px;padding:32px 8px;display:flex}.empty p{max-width:52ch}.empty-title{font-size:15px;font-weight:600}.empty-page{gap:10px;padding-top:18vh}.qs{flex-direction:column;gap:8px;display:flex}.qs-list{max-height:46vh;margin:0;padding:0;list-style:none;overflow-y:auto}.qs-section{color:var(--text-muted);padding:10px 8px 4px;font-size:12px;font-weight:500}.qs-item{border-radius:var(--radius);cursor:pointer;align-items:center;gap:10px;padding:7px 8px;display:flex}.qs-item.is-active{background:var(--bg-active)}.qs-icon{color:var(--text-faint);display:grid}.qs-label{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.qs-hint{color:var(--text-faint);font-size:12px}.qs-empty{padding:16px 8px}.qs-foot{border-top:1px solid var(--border);align-items:center;gap:5px;padding-top:8px;display:flex}.search-hero{align-items:center;gap:8px;max-width:640px;margin-bottom:20px;display:flex;position:relative}.search-hero .input{height:40px;padding-left:36px;font-size:14px}.search-hero .btn{height:40px}.search-hero-icon{color:var(--text-faint);pointer-events:none;z-index:1;position:absolute;left:12px}.tag-list{flex-wrap:wrap;gap:6px;display:flex}.tag{border-radius:var(--radius);background:var(--bg-hover);padding:3px 10px;font-weight:500}.tag:hover{background:var(--bg-active);text-decoration:none}.filter-bar{border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--bg-subtle);flex-wrap:wrap;align-items:flex-end;gap:10px 12px;margin-bottom:16px;padding:12px;display:flex}.filter-field{flex-direction:column;gap:3px;width:150px;display:flex}.filter-label{color:var(--text-muted);font-size:12px}.filter-actions{gap:4px;display:flex}.filter-bar .segmented{margin-left:auto}.audit-list{margin:0;padding:0;list-style:none}.audit-row{border-bottom:1px solid var(--border);grid-template-columns:110px minmax(0,1fr) auto;align-items:start;gap:16px;padding:10px 4px;display:grid}.audit-time{color:var(--text-muted);font-variant-numeric:tabular-nums;padding-top:1px;font-size:13px}.audit-main{flex-direction:column;gap:3px;min-width:0;display:flex}.audit-line{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.action{font-weight:500}.action:before{content:"";vertical-align:1px;background:var(--pending-strong);border-radius:2px;width:7px;height:7px;margin-right:7px;display:inline-block}.action-add:before{background:var(--allow)}.action-remove:before{background:var(--deny)}.action-expire{color:var(--text-muted)}.action-expire:before{background:var(--text-faint)}.audit-target{font-weight:500}.audit-target-group:before{content:"группа ";color:var(--text-muted);font-weight:400}.audit-perm{color:var(--text)}.audit-meta{flex-direction:column;align-items:flex-end;gap:2px;font-size:13px;display:flex}.audit-actor{color:var(--text-muted)}.code-link{background:var(--accent-soft);color:var(--accent);cursor:pointer;border:0;border-radius:4px;padding:1px 6px;font-size:12px}.code-link:hover{background:color-mix(in srgb, var(--accent-soft) 100%, var(--accent) 10%)}.load-more{justify-content:center;padding:20px;display:flex}.comment{border-left:3px solid var(--border-strong);color:var(--text);margin:0 0 16px;padding:4px 0 4px 14px;font-size:15px}.facts{gap:40px;margin:0;display:flex}.facts dt{color:var(--text-muted);font-size:12.5px}.facts dd{margin:0;font-weight:500}.ops{margin:0;padding:0;list-style:none}.op{border-bottom:1px solid var(--border);gap:12px;padding:8px 10px;display:flex}.op-conflict{background:var(--row-changed);box-shadow:inset 3px 0 0 var(--pending-strong)}.op-seq{width:28px;color:var(--text-faint);font-variant-numeric:tabular-nums;text-align:right;flex:none}.op-body{flex:1;min-width:0}.op-current{align-items:center;gap:8px;margin-top:2px;display:flex}.flow{counter-reset:flow;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:0 0 28px;padding:0;list-style:none;display:grid}.flow li{counter-increment:flow;border:1px solid var(--border);border-radius:var(--radius-lg);color:var(--text-muted);padding:12px 14px;font-size:13px}.flow li:before{content:counter(flow);background:var(--accent-soft);width:20px;height:20px;color:var(--accent);border-radius:50%;place-items:center;margin-right:8px;font-size:12px;font-weight:600;display:inline-grid}.flow b{color:var(--text);font-weight:600}.skeleton{border-radius:var(--radius-lg);background:linear-gradient(90deg, var(--bg-hover) 0%, var(--bg-active) 50%, var(--bg-hover) 100%);background-size:200% 100%;animation:1.2s linear infinite shimmer}.skeleton-title{width:260px;height:36px;margin:36px 0 24px}.skeleton-block{height:120px;margin:16px 0}@keyframes shimmer{to{background-position:-200% 0}}.fullscreen{background:var(--bg-sidebar);place-items:center;min-height:100%;padding:24px 16px;display:grid}.fullscreen-card{text-align:center;flex-direction:column;align-items:center;gap:10px;max-width:440px;display:flex}.fullscreen-icon{color:var(--accent);margin-bottom:4px}.fullscreen-title{letter-spacing:-.01em;font-size:20px;font-weight:650}.boot-spinner{border:2px solid var(--border-strong);border-top-color:var(--accent);border-radius:50%;width:22px;height:22px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.toasts{z-index:1100;flex-direction:column;gap:8px;max-width:min(420px,100vw - 32px);display:flex;position:fixed;bottom:16px;right:16px}.toast{border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--bg-elevated);box-shadow:var(--shadow-pop);align-items:flex-start;gap:10px;padding:10px 8px 10px 12px;animation:.16s ease-out rise;display:flex}.toast-icon{flex:none;margin-top:2px}.toast-success .toast-icon{color:var(--allow)}.toast-error{border-color:color-mix(in srgb, var(--deny) 35%, var(--border))}.toast-error .toast-icon{color:var(--deny)}.toast-info .toast-icon{color:var(--accent)}.toast-text{flex:1;font-size:13.5px}@media (width<=1180px){.content{padding:24px 28px 80px}.col-value{width:120px}.col-expiry{width:150px}.col-context{width:24%}.col-actions{width:64px}.duration-date{display:none}.glist-item,.glist-add{grid-template-columns:minmax(0,1fr) 150px minmax(0,24%) 64px}}@media (width<=1024px){:root{--sidebar-w:232px}.content{padding:20px 20px 72px}.meta-grid{grid-template-columns:minmax(0,1fr)}.audit-row{grid-template-columns:90px minmax(0,1fr)}.audit-meta{flex-direction:row;grid-column:2;align-items:center;gap:10px}.filter-bar .segmented{margin-left:0}}@media (width<=760px){.app{grid-template-rows:auto minmax(0,1fr);grid-template-columns:minmax(0,1fr);height:auto;min-height:100%}.sidebar{border-right:0;border-bottom:1px solid var(--border);max-height:45vh}.main{overflow:visible}.content{padding:16px 16px 72px}.page-title{font-size:24px}.settings-grid,.flow{grid-template-columns:minmax(0,1fr)}.node-table{overflow-x:auto}.node-table .table{min-width:720px}.glist-item,.glist-add{grid-template-columns:minmax(0,1fr) auto}.filter-field{width:calc(50% - 6px)}.table-compact{display:block;overflow-x:auto}}
