:root{--bg:#0f1115;--panel:#171a21;--panel-2:#1d212a;--border:#2a2f3a;--text:#e6e9ef;--muted:#9aa3b2;--accent:#fbba00;--accent-press:#c17700;--accent-2:#6b4fbb;--ok:#3fb950;--danger:#f85149;--shadow:0 8px 30px rgba(0,0,0,0.4)}*{box-sizing:border-box;scrollbar-width:thin;scrollbar-color:#39404d transparent}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#39404d;border-radius:8px;border:2px solid var(--bg)}::-webkit-scrollbar-thumb:hover{background:#4a5263}::-webkit-scrollbar-corner{background:transparent}body,html{margin:0;padding:0;background:var(--bg);color:var(--text);font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;font-size:14px}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}header.appbar{display:flex;align-items:center;gap:12px;padding:10px 18px;background:var(--panel);border-bottom:1px solid var(--border);position:-webkit-sticky;position:sticky;top:0;z-index:20}header.appbar .brand{display:inline-flex;align-items:center;gap:10px}header.appbar .brand:hover{text-decoration:none}header.appbar .spacer{flex:1 1}header.appbar .user{color:var(--muted)}main{padding:18px}.btn{display:inline-flex;align-items:center;gap:6px;background:var(--panel-2);color:var(--text);border:1px solid var(--border);border-radius:6px;padding:7px 12px;cursor:pointer;font-size:13px}.btn.primary,.btn:hover{border-color:var(--accent)}.btn.primary{background:var(--accent);color:#1a1205;font-weight:600}.btn.primary:hover{background:var(--accent-press);border-color:var(--accent-press)}.btn.danger{border-color:var(--danger);color:var(--danger)}.btn.active{border-color:var(--accent);color:var(--accent)}.btn:disabled{opacity:.5;cursor:not-allowed}.toolbar{display:flex;align-items:center;gap:10px;margin-bottom:14px;flex-wrap:wrap}.toggle-inline{display:inline-flex;align-items:center;gap:6px;color:var(--text);font-size:13px;white-space:nowrap}input[type=search],input[type=text],select,textarea{background:var(--panel-2);color:var(--text);border:1px solid var(--border);border-radius:6px;padding:7px 10px;font-size:13px;font-family:inherit}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent)}.pivot-wrap{overflow:auto;border:1px solid var(--border);border-radius:8px;max-height:calc(100vh - 180px)}table.pivot{border-collapse:separate;border-spacing:0;width:100%}table.pivot td,table.pivot th{border-bottom:1px solid var(--border);border-right:1px solid var(--border);padding:0;text-align:left;vertical-align:top}table.pivot thead th{top:0;z-index:10;padding:10px 12px;font-size:12px;text-transform:uppercase;letter-spacing:.4px;color:var(--muted)}table.pivot td.key-col,table.pivot th.key-col,table.pivot thead th{position:-webkit-sticky;position:sticky;background:var(--panel);white-space:nowrap}table.pivot td.key-col,table.pivot th.key-col{left:0;z-index:5;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13px;padding:8px 12px}table.pivot td.key-col{cursor:pointer}table.pivot td.key-col:hover{color:var(--accent)}table.pivot thead th.key-col{z-index:15}.cell{display:flex;align-items:center;gap:8px;padding:6px 10px;min-height:36px;cursor:pointer;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px}.cell:hover{background:var(--panel-2)}.cell.empty{color:var(--muted);cursor:pointer}.legend{display:flex;flex-wrap:wrap;gap:18px;margin:-4px 0 12px;font-size:12px;color:var(--muted)}.legend-item{display:inline-flex;align-items:center;gap:7px}.legend code{color:var(--text)}.swatch{width:12px;height:12px;border-radius:3px}.swatch.redundant{background:var(--accent-2)}.swatch.gap{background:rgba(248,81,73,.45);border:1px solid var(--danger)}table.pivot td.key-col.redundant{background:color-mix(in srgb,var(--accent-2) 30%,var(--panel));box-shadow:inset 4px 0 0 var(--accent-2);color:#d9ccff;cursor:help}.cell.empty.gap{background:rgba(248,81,73,.14);color:var(--danger)}.cell .val{flex:1 1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:320px}.cell .eye{opacity:.55}.cell .eye:hover{opacity:1}.flags{display:inline-flex;gap:3px}.flag{font-size:9px;font-weight:700;padding:1px 4px;border-radius:3px;border:1px solid var(--border);color:var(--muted);text-transform:uppercase}.flag.p{border-color:var(--accent-2);color:#b9a7ec}.flag.m{border-color:var(--ok);color:var(--ok)}.flag.h{border-color:var(--accent);color:var(--accent)}.flag.f{border-color:#2f81f7;color:#6cb6ff}.flag.r{border-color:var(--muted)}.overlay{position:fixed;inset:0;background:rgba(0,0,0,.6);display:flex;align-items:center;justify-content:center;z-index:50}.modal{background:var(--panel);border:1px solid var(--border);border-radius:10px;box-shadow:var(--shadow);width:560px;max-width:92vw;max-height:90vh;overflow:auto;padding:20px}.modal.wide{width:680px}.modal.xwide{width:820px}.rowedit-head,.rowedit-row{display:grid;grid-template-columns:1fr 1.4fr 116px 28px 28px 92px 30px;align-items:center;grid-gap:8px;gap:8px}.rowedit-head span:nth-child(4),.rowedit-head span:nth-child(5){text-align:center}.rowedit-head{padding:8px 10px 4px;color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.4px}.rowedit-row{padding:6px 10px;border-bottom:1px solid var(--border)}.rowedit-row:last-child{border-bottom:none}.rowedit-row input[type=text],.rowedit-row select{width:100%}.rowedit-row.del{opacity:.55}.rowedit-row.del .bulk-scope{text-decoration:line-through}.rowedit-flags{display:inline-flex;gap:8px;font-size:11px;color:var(--muted)}.rowedit-flags label{display:inline-flex;align-items:center;gap:3px}.rowedit-actions{text-align:center;font-weight:700}.icon-btn{background:none;border:none;cursor:pointer;font-size:14px;opacity:.7;padding:2px}.icon-btn.active,.icon-btn:hover{opacity:1}.modal h3{margin:0 0 4px}.bulk-toolbar{display:flex;align-items:center;gap:8px}.bulk-head,.bulk-row{display:grid;grid-template-columns:24px 1fr 1.4fr 56px;align-items:center;grid-gap:8px;gap:8px}.bulk-head{padding:8px 10px 4px;color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.4px}.bulk-rows{border:1px solid var(--border);border-radius:6px;max-height:320px;overflow:auto}.bulk-row{padding:6px 10px;border-bottom:1px solid var(--border)}.bulk-row:last-child{border-bottom:none}.bulk-row input[type=text],.bulk-row textarea,.rowedit-row textarea{width:100%}.bulk-row textarea,.bulk-toolbar textarea,.rowedit-row textarea{min-height:34px;height:34px;resize:vertical;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;line-height:1.3}.rowedit-row{align-items:start}.rowedit-row textarea{min-height:72px;height:72px}.bulk-row .bulk-scope{font-family:ui-monospace,monospace;font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bulk-status{text-align:center;font-weight:700}.import-row{display:grid;grid-template-columns:1fr 1.4fr 32px;align-items:center;grid-gap:8px;gap:8px;padding:5px 10px;border-bottom:1px solid var(--border)}.import-row:last-child{border-bottom:none}.import-val{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.scope-chips{display:flex;flex-wrap:wrap;gap:8px 16px}.modal .sub{color:var(--muted);margin:0 0 16px;font-family:ui-monospace,monospace;font-size:12px}.field{margin-bottom:14px}.field label{display:block;margin-bottom:5px;color:var(--muted);font-size:12px}.field input[type=text],.field select,.field textarea{width:100%}.field textarea{min-height:90px;resize:vertical;font-family:ui-monospace,monospace}.checks{display:flex;flex-direction:column;gap:10px;flex-wrap:wrap}.checks label{display:inline-flex;align-items:center;gap:6px;color:var(--text)}.radios{display:flex;flex-direction:column;gap:8px}.radios label{display:inline-flex;align-items:center;gap:6px;color:var(--text)}.hint{color:var(--muted);font-size:12px}.modal-actions{display:flex;gap:10px;margin-top:18px}.modal-actions .spacer{flex:1 1}.err{color:var(--danger);font-size:12px;margin-top:10px}.landing{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:70vh;gap:18px;text-align:center}.card-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));grid-gap:12px;gap:12px}.proj-card{display:block;background:var(--panel);border:1px solid var(--border);border-radius:8px;padding:14px}.proj-card:hover{border-color:var(--accent);text-decoration:none}.proj-card .ns{font-size:12px;font-family:ui-monospace,monospace;margin-top:4px;line-height:1.35;overflow-wrap:anywhere}.muted,.proj-card .ns{color:var(--muted)}