:root{--bg: #f4f5f7;--surface: #ffffff;--surface-2: #f0f2f5;--border: #e1e4ea;--text: #1c2230;--text-muted: #667085;--primary: #2563eb;--primary-text: #ffffff;--primary-soft: #e6eefd;--sidebar-bg: #1b2232;--sidebar-text: #c9d1e0;--sidebar-active: #2d3850;--ok: #157f3c;--ok-bg: #e3f5e9;--warn: #9a6100;--warn-bg: #fdf1d8;--bad: #b42318;--bad-bg: #fde7e5;--info: #1d5fc4;--info-bg: #e3edfc;--accent: #6d3fc8;--accent-bg: #efe7fc;--muted: #5b6474;--muted-bg: #eceef2;--teal: #0f9488;--purple: #7c4dcc;--orange: #e07a1f;--pink: #d9467e;--radius: 10px;--shadow: 0 1px 2px rgb(16 24 40 / 6%), 0 1px 3px rgb(16 24 40 / 8%);--font: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--mono: ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace;color-scheme:light}@media(prefers-color-scheme:dark){:root{--bg: #0f131a;--surface: #171c25;--surface-2: #1e2430;--border: #2a3140;--text: #e4e8ef;--text-muted: #8f99aa;--primary: #5b8def;--primary-text: #0b1020;--primary-soft: #1d2a45;--sidebar-bg: #0b0f15;--sidebar-text: #aab4c5;--sidebar-active: #1d2533;--ok: #5fd08a;--ok-bg: #143322;--warn: #f0b552;--warn-bg: #3a2c10;--bad: #ff8a80;--bad-bg: #3d1a18;--info: #8ab4ff;--info-bg: #182a48;--accent: #c3a2ff;--accent-bg: #2c2045;--muted: #a0a9b8;--muted-bg: #252b37;--shadow: none;color-scheme:dark}}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;background:var(--bg);color:var(--text);font:14px/1.5 var(--font)}a{color:var(--primary);text-decoration:none}a:hover{text-decoration:underline}h1{font-size:22px;margin:2px 0}h2{font-size:16px;margin:0 0 12px}.muted{color:var(--text-muted)}.small{font-size:12px}.mono{font-family:var(--mono);font-size:12.5px}.nowrap{white-space:nowrap}.num{text-align:right;white-space:nowrap}.shell{display:flex;min-height:100vh}.sidebar{width:220px;flex-shrink:0;background:var(--sidebar-bg);color:var(--sidebar-text);padding:20px 12px;position:sticky;top:0;height:100vh}.brand{font-weight:700;font-size:18px;padding:0 10px 20px}.brand span{font-weight:400;opacity:.6}.sidebar nav{display:flex;flex-direction:column;gap:2px}.sidebar nav a{color:var(--sidebar-text);padding:8px 12px;border-radius:8px;white-space:nowrap}.sidebar nav a:hover{background:var(--sidebar-active);text-decoration:none}.sidebar nav a.active{background:var(--sidebar-active);color:#fff;font-weight:600}.main{flex:1;min-width:0;display:flex;flex-direction:column}.topbar{display:flex;justify-content:flex-end;align-items:center;gap:16px;padding:10px 24px;background:var(--surface);border-bottom:1px solid var(--border)}.who{display:flex;align-items:center;gap:8px}.content{padding:24px;max-width:1280px;width:100%}@media(max-width:800px){.shell{flex-direction:column}.sidebar{width:auto;height:auto;position:static;display:flex;align-items:center;gap:12px;padding:8px 12px;overflow-x:auto}.brand{padding:0 4px;font-size:16px;white-space:nowrap}.sidebar nav{flex-direction:row}.topbar{padding:8px 16px}.content{padding:16px}}.page-head{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;flex-wrap:wrap;margin-bottom:16px}.page-head p{margin:0}.actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px;margin-bottom:16px}.card-head{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:12px}.card-head h2{margin:0}.stats{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:16px;margin-bottom:16px}.stats .card{margin:0}.stat-label{color:var(--text-muted);font-size:12px;text-transform:uppercase;letter-spacing:.04em}.stat-value{font-size:20px;margin:6px 0}.stat-value .badge{font-size:16px;padding:2px 12px}.link-card{color:inherit}.link-card:hover{text-decoration:none;border-color:var(--primary)}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--border);vertical-align:top}thead th{font-size:12px;font-weight:600;color:var(--text-muted);white-space:nowrap}tbody tr:last-child td,tbody tr:last-child th{border-bottom:none}tbody tr:hover{background:var(--surface-2)}tr.dim{opacity:.6}td.empty{text-align:center;color:var(--text-muted);padding:24px}td.row-actions{text-align:right;white-space:nowrap}td.row-actions .btn+.btn{margin-left:6px}.error-text{color:var(--bad);font-size:12.5px;max-width:360px}td.detail{max-width:420px;word-break:break-word}.member-cell{display:flex;align-items:center;gap:8px}.matrix th[scope=row]{white-space:nowrap}.matrix select{min-width:130px}.matrix select.overridden{border-color:var(--primary);background:var(--primary-soft);font-weight:600}.effective{margin-top:4px}.badge{display:inline-block;padding:1px 8px;border-radius:999px;font-size:12px;font-weight:600;white-space:nowrap}.badge-ok{color:var(--ok);background:var(--ok-bg)}.badge-warn{color:var(--warn);background:var(--warn-bg)}.badge-bad{color:var(--bad);background:var(--bad-bg)}.badge-info{color:var(--info);background:var(--info-bg)}.badge-accent{color:var(--accent);background:var(--accent-bg)}.badge-muted{color:var(--muted);background:var(--muted-bg)}.avatar{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:50%;color:#fff;font-weight:700;font-size:13px;flex-shrink:0}.avatar-teal{background:var(--teal)}.avatar-purple{background:var(--purple)}.avatar-orange{background:var(--orange)}.avatar-pink{background:var(--pink)}.alert{padding:10px 14px;border-radius:8px;margin:0 0 16px}.alert.error{color:var(--bad);background:var(--bad-bg)}.alert.success{color:var(--ok);background:var(--ok-bg)}.alert.warn{color:var(--warn);background:var(--warn-bg)}.alert.info{color:var(--info);background:var(--info-bg)}input,select,textarea{font:inherit;color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:7px 10px}input:focus,select:focus,textarea:focus{outline:2px solid var(--primary);outline-offset:-1px}input:disabled,select:disabled,textarea:disabled{opacity:.6}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;font:inherit;font-weight:500;color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:7px 14px;cursor:pointer;white-space:nowrap}.btn:hover:not(:disabled){background:var(--surface-2);text-decoration:none}.btn:disabled{opacity:.5;cursor:default}.btn.primary{color:var(--primary-text);background:var(--primary);border-color:var(--primary)}.btn.primary:hover:not(:disabled){background:var(--primary);filter:brightness(1.08)}.btn.danger{color:var(--bad);border-color:var(--bad)}.btn.small{padding:3px 10px;font-size:12.5px}.btn.block{width:100%}.btn-icon{font-size:22px;line-height:1;background:none;border:none;color:var(--text-muted);cursor:pointer}.form{display:flex;flex-direction:column;gap:12px}.form-row{display:flex;gap:12px}.field{display:flex;flex-direction:column;gap:4px}.field>span{font-size:12px;font-weight:600;color:var(--text-muted)}.field.grow{flex:1}.field.narrow{width:80px}.check{display:flex;align-items:center;gap:8px}.form-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:4px}.form .alert{margin:0}.inline-form{display:flex;gap:6px;align-items:center}input.cadence{width:100px}.switch{position:relative;display:inline-block;width:38px;height:22px}.switch input{position:absolute;opacity:0;width:100%;height:100%;margin:0;cursor:pointer;z-index:1}.switch .slider{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:999px;background:var(--muted-bg);border:1px solid var(--border);transition:background .15s}.switch .slider:before{content:"";position:absolute;width:16px;height:16px;left:2px;top:2px;border-radius:50%;background:#fff;box-shadow:0 1px 2px #0000004d;transition:transform .15s}.switch input:checked+.slider{background:var(--ok);border-color:var(--ok)}.switch input:checked+.slider:before{transform:translate(16px)}.switch input:disabled+.slider{opacity:.5}.switch input:focus-visible+.slider{outline:2px solid var(--primary)}.pbar{display:inline-block;flex:1;min-width:60px;height:8px;border-radius:4px;background:var(--muted-bg);overflow:hidden}.pbar i{display:block;height:100%;border-radius:4px;background:var(--warn);transition:width .2s}.pbar.full i{background:var(--ok)}.chip{display:inline-block;padding:0 7px;border-radius:6px;font-size:11.5px;line-height:20px;font-weight:600;white-space:nowrap;border:1px solid transparent}.chip-ok{color:var(--ok);background:var(--ok-bg)}.chip-warn{color:var(--warn);background:var(--warn-bg)}.chip-bad{color:var(--bad);background:var(--bad-bg)}.chip-info{color:var(--info);background:var(--info-bg)}.chip-muted{color:var(--muted);background:var(--muted-bg)}.art-wait{display:block;width:100%;height:100%;background:var(--surface-2)}.art-wait.failed{display:grid;place-items:center;font-size:11px;color:var(--text-muted)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;display:flex;align-items:flex-start;justify-content:center;padding:8vh 16px 16px;z-index:100;overflow-y:auto}.modal{width:100%;max-width:480px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:20px}.modal-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.modal-head h2{margin:0}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:16px}.login-card{width:100%;max-width:360px;display:flex;flex-direction:column;gap:14px;padding:28px}.login-card .brand{padding:0}.login-card .alert{margin:0}.json-editor{width:100%;min-height:65vh;font-family:var(--mono);font-size:13px;line-height:1.45;-moz-tab-size:2;tab-size:2;resize:vertical;white-space:pre}.json-editor.invalid{border-color:var(--warn)}
