:root{--bg: #1a1a2e;--panel: #16213e;--line: #0f3460;--accent: #e94560;--accent-hi: #ff5570;--input: #2a2a3e;--border: #404060;--tx: #fff;--tx2: #ccc;--tx3: #aaa;--tx4: #666;--ok: #4caf50;--warn: #ff9800;--info: #2196f3;--mono: ui-monospace, "JetBrains Mono", "Cascadia Mono", Consolas, monospace;--sans: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif}*{box-sizing:border-box}html,body,#root{margin:0;height:100%}body{background:var(--bg);color:var(--tx);font:13px/1.45 var(--sans);overflow:hidden}button{font:inherit;cursor:pointer}a{color:var(--accent)}.app{display:grid;grid-template-columns:200px 1fr;grid-template-rows:1fr 26px;height:100vh}.rail{grid-row:1/3;background:var(--panel);border-right:2px solid var(--line);display:flex;flex-direction:column}.brand{padding:12px;border-bottom:1px solid var(--line)}.brand b{display:block;font-size:15px;letter-spacing:.14em;text-transform:uppercase}.brand b i{color:var(--accent);font-style:normal}.brand small{color:var(--tx4);font:10px var(--mono)}.rail nav{padding:8px 0;flex:1;overflow:auto}.rail nav button{display:flex;gap:9px;align-items:center;width:100%;background:none;border:0;border-left:3px solid transparent;padding:9px 12px;color:var(--tx3);text-align:left;font-size:12px}.rail nav button:hover{background:var(--input);color:var(--tx)}.rail nav button[aria-current=true]{background:var(--input);border-left-color:var(--accent);color:#fff;font-weight:600}.rail nav button:disabled{opacity:.35;cursor:not-allowed}.role{margin:8px;padding:7px 9px;background:var(--line);border-radius:3px;font:10px/1.4 var(--mono);color:var(--tx3)}.role b{color:#fff}.role button{background:none;border:0;color:var(--accent);padding:0;margin-top:4px;font:10px var(--mono)}.view{grid-row:1;overflow:auto;padding:14px 16px}.status{grid-column:2;background:var(--panel);border-top:1px solid var(--line);display:flex;align-items:center;gap:14px;padding:0 12px;font:10px var(--mono);color:var(--tx3)}.status .sep{flex:1}.dot{width:7px;height:7px;border-radius:50%;display:inline-block;margin-right:5px;background:var(--tx4)}.dot.on{background:var(--ok);box-shadow:0 0 6px var(--ok)}.dot.rec{background:var(--accent);animation:pulse 1.6s infinite}.dot.off{background:var(--tx4)}@keyframes pulse{50%{opacity:.25}}h1{font-size:15px;margin:0 0 2px}.sub{color:var(--tx4);font:11px var(--mono);margin-bottom:14px}.sec{background:var(--panel);padding:7px 9px;margin:14px 0 7px;font-weight:700;font-size:12px;border-left:3px solid var(--accent)}.row{display:flex;align-items:center;gap:8px;padding:3px 4px;margin-bottom:5px}.row>label{width:150px;flex:none;color:var(--tx2);font-size:11px}.inp{flex:1;background:var(--input);border:1px solid var(--border);border-radius:3px;padding:5px 7px;color:#fff;font:12px var(--sans);min-width:0}.inp:focus{outline:none;border-color:var(--accent)}.inp.ro{background:var(--bg);color:#888}.inp.mono{font-family:var(--mono);font-size:11px}.inp.bad{border-color:var(--accent)}textarea.inp{resize:vertical;font-family:var(--sans)}.btn{background:var(--input);border:1px solid var(--border);border-radius:4px;padding:7px 14px;color:#fff;font-size:11px}.btn:hover:not(:disabled){background:var(--border);border-color:var(--accent)}.btn:disabled{opacity:.4;cursor:not-allowed}.btn.primary{background:var(--accent);border-color:var(--accent);font-weight:700}.btn.primary:hover:not(:disabled){background:var(--accent-hi)}.btn.sm{padding:4px 9px;font-size:10px}.banner{background:#e9456038;border-left:4px solid var(--accent);border-radius:4px;padding:9px 11px;margin-bottom:11px;color:#f99;font-size:11px}.banner.ok{background:#4caf5026;border-left-color:var(--ok);color:#9fe0a2}.banner.warn{background:#ff980026;border-left-color:var(--warn);color:#ffcc80}.banner ul{margin:4px 0 0;padding-left:18px}.badge{padding:2px 6px;border-radius:3px;font:9px/1.5 var(--sans);font-weight:700;color:#fff}.chip{display:inline-block;padding:2px 7px;border-radius:10px;font:10px/1.6 var(--mono);background:var(--line);color:var(--tx3)}.pane{display:grid;grid-template-columns:250px 1fr;height:calc(100vh - 54px);border:1px solid var(--line);border-radius:4px;overflow:hidden;margin-top:10px}.pane>.left{background:var(--panel);border-right:2px solid var(--line);display:flex;flex-direction:column;min-height:0}.pane>.right{background:var(--bg);display:flex;flex-direction:column;min-height:0}.phead{background:var(--line);padding:8px;font-weight:700;font-size:12px}.filters{display:flex;flex-wrap:wrap;gap:3px;padding:4px 8px}.filters button{background:var(--input);border:1px solid var(--border);border-radius:3px;padding:3px 7px;color:var(--tx3);font-size:10px}.filters button.on{background:var(--accent);border-color:var(--accent);color:#fff}.count{margin:8px;padding:4px;background:var(--line);border-radius:3px;text-align:center;color:var(--tx3);font:10px var(--mono)}.list{flex:1;overflow:auto;min-height:0}.ent{display:flex;align-items:center;gap:8px;padding:6px 8px;border-bottom:1px solid var(--line);background:var(--panel);cursor:pointer}.ent:hover{background:var(--input)}.ent.on{background:var(--accent)}.ent .nm{flex:1;font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ent .err{color:#f99;font-size:12px}.ent.on .err{color:#fff}.ico{width:30px;height:30px;flex:none;border-radius:4px;background:var(--input);display:grid;place-items:center;font-size:14px;object-fit:contain}.tabs{display:flex;background:var(--panel);border-bottom:2px solid var(--line)}.tabs button{background:none;border:0;border-bottom:3px solid transparent;padding:9px 16px;color:var(--tx3);font-weight:700;font-size:11px}.tabs button.on{border-bottom-color:var(--accent);color:#fff}.body{flex:1;overflow:auto;padding:11px;min-height:0}.foot{background:var(--panel);border-top:1px solid var(--line);padding:8px;display:flex;gap:7px;align-items:center}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:5px}.flag{background:var(--panel);border-radius:3px;padding:6px 8px;display:flex;gap:7px;align-items:center;font-size:11px}.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:10px}.card{background:var(--panel);border:1px solid var(--line);border-radius:5px;padding:11px 12px}.card .lab{color:var(--tx4);font:10px var(--mono);text-transform:uppercase;letter-spacing:.08em}.card .val{font-size:26px;font-weight:700;margin-top:6px;font-family:var(--mono)}.card .val small{font-size:11px;color:var(--tx4);font-weight:400}.card.acc{border-left:3px solid var(--accent)}.card.g{border-left:3px solid var(--ok)}.card.w{border-left:3px solid var(--warn)}.card.b{border-left:3px solid var(--info)}table{width:100%;border-collapse:collapse;font-size:11px}th{text-align:left;color:var(--tx4);font:10px var(--mono);text-transform:uppercase;padding:7px 9px;border-bottom:1px solid var(--line)}td{padding:7px 9px;border-bottom:1px solid var(--line);color:var(--tx2)}tr:hover td{background:var(--panel)}td.m{font-family:var(--mono);font-size:10px;color:var(--tx3)}.build{display:grid;grid-template-columns:220px 1fr 210px;height:calc(100vh - 54px);border:1px solid var(--line);border-radius:4px;overflow:hidden;margin-top:10px}.build .side{background:var(--panel);display:flex;flex-direction:column;min-height:0}.build .mid{position:relative;background:#12121f;min-width:0}.build canvas{display:block;width:100%;height:100%}.pal{padding:6px;overflow:auto;flex:1}.pal button{display:flex;align-items:center;gap:7px;width:100%;background:var(--input);border:1px solid var(--border);border-radius:3px;padding:7px 8px;margin-bottom:4px;color:var(--tx2);font-size:11px;text-align:left}.pal button.on{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}.pal .t{margin-left:auto;font:9px var(--mono);opacity:.65}.hud{position:absolute;left:10px;bottom:10px;background:#0f3460d9;border:1px solid var(--border);border-radius:4px;padding:7px 10px;font:10px/1.7 var(--mono);color:var(--tx2);pointer-events:none}.hud b{color:var(--accent)}.snapbar{position:absolute;top:10px;left:50%;transform:translate(-50%);padding:5px 12px;border-radius:12px;font:10px var(--mono);border:1px solid;pointer-events:none}.snapbar.ok{background:#4caf502e;border-color:var(--ok);color:#9fe0a2}.snapbar.no{background:#e945602e;border-color:var(--accent);color:#f99}.sock{display:flex;align-items:center;gap:7px;padding:5px 9px;font:10px var(--mono);color:var(--tx3);border-bottom:1px solid var(--line)}.sw{width:9px;height:9px;border-radius:2px;flex:none}.diff{font:11px/1.7 var(--mono);background:#12121f;border:1px solid var(--line);border-radius:4px;padding:10px 12px;overflow:auto;max-height:340px;white-space:pre}.diff .a{color:#9fe0a2;background:#4caf5017;display:block}.diff .d{color:#f99;background:#e9456017;display:block}.diff .c{color:var(--tx4);display:block}.diff .h{color:var(--info);display:block;margin-top:6px}.login{display:grid;place-items:center;height:100vh}.login form{background:var(--panel);border:1px solid var(--line);border-radius:6px;padding:22px;width:340px}.login h1{letter-spacing:.14em;text-transform:uppercase;margin-bottom:16px}.login h1 i{color:var(--accent);font-style:normal}.login .inp{width:100%;margin-bottom:9px}.login .btn{width:100%}.err{color:#f99;font-size:11px;margin-bottom:9px}.spin{color:var(--tx4);font:11px var(--mono);padding:14px}code{font-family:var(--mono);font-size:11px;background:var(--input);padding:1px 5px;border-radius:3px}.iconhero{display:flex;gap:16px;align-items:flex-start;margin:4px 4px 18px;padding:14px;background:var(--panel);border:1px solid var(--line);border-radius:6px}.iconhero-frame{position:relative;width:96px;height:96px;flex:none;background:var(--input);border:1px solid var(--border);border-radius:6px;display:grid;place-items:center}.iconhero-img{width:100%;height:100%;object-fit:contain;padding:6px}.iconhero-empty{color:var(--tx4);font:10px var(--mono)}.iconhero-tip{position:absolute;left:calc(100% + 10px);top:0;z-index:30;min-width:190px;background:var(--line);border:1px solid var(--accent);border-radius:5px;padding:8px 10px;box-shadow:0 6px 18px #00000073}.iconhero-tip:before{content:"";position:absolute;left:-5px;top:14px;width:8px;height:8px;background:var(--line);border-left:1px solid var(--accent);border-bottom:1px solid var(--accent);transform:rotate(45deg)}.iconhero-tip-name{color:#fff;font-size:12px;font-weight:600}.iconhero-tip-guid{font:10px var(--mono);color:var(--tx4);margin-top:2px}.iconhero-tip-select{width:100%;margin-top:7px;background:var(--input);border:1px solid var(--border);border-radius:3px;color:#fff;font:11px var(--mono);padding:4px}.iconhero-tip-select:focus{outline:none;border-color:var(--accent)}.iconhero-fields{flex:1;min-width:0;display:flex;flex-direction:column;gap:8px}.iconhero-row{display:flex;align-items:flex-start;gap:10px}.iconhero-row>label{width:96px;flex:none;color:var(--tx2);font-size:11px;padding-top:6px}.iconhero-row .inp{flex:1;min-width:0}.iconhero-row textarea.inp{resize:vertical}.panel h2{margin:0 0 4px}.panel .muted{color:var(--tx3);font-size:12px}.settings-card{max-width:460px;background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:18px;margin-top:12px}.settings-who{display:flex;flex-direction:column;gap:2px;padding-bottom:12px;margin-bottom:12px;border-bottom:1px solid var(--line)}.settings-who b{color:#fff}.settings-who span{color:var(--tx3);font-size:12px}.frm{display:flex;flex-direction:column;gap:6px}.frm label{font-size:11px;color:var(--tx2);margin-top:6px}.frm input{background:var(--input);border:1px solid var(--border);border-radius:4px;color:#fff;padding:7px 9px;font:inherit}.frm .primary,.modal .primary,button.primary{background:var(--accent);border:none;color:#fff;border-radius:5px;padding:8px 14px;margin-top:10px;cursor:pointer}button.primary:disabled{opacity:.5;cursor:not-allowed}.bad-txt{color:#ff9b9b;font-size:12px}.ok-txt{color:#8fe6a0;font-size:12px}table.users{width:100%;border-collapse:collapse;margin-top:10px;font-size:13px}table.users th{text-align:left;color:var(--tx2);font-weight:600;font-size:11px;padding:6px 10px;border-bottom:1px solid var(--line)}table.users td{padding:8px 10px;border-bottom:1px solid var(--line);vertical-align:middle}table.users tr.inactive{opacity:.5}table.users select{background:var(--input);border:1px solid var(--border);border-radius:4px;color:#fff;padding:4px 6px;font:inherit}.linky{background:none;border:none;color:var(--accent-2, #8fd0ff);cursor:pointer;padding:0;font:inherit;text-decoration:underline}.you{margin-left:6px;font-size:10px;color:var(--tx3);border:1px solid var(--line);border-radius:3px;padding:0 4px}.on{color:#8fe6a0}.off{color:var(--tx3)}.lock{color:#ffcf82}.row-actions{display:flex;gap:6px}.row-actions button{background:var(--input);border:1px solid var(--border);color:var(--tx1);border-radius:4px;padding:4px 8px;cursor:pointer;font-size:12px}.row-actions button:disabled{opacity:.4;cursor:not-allowed}.detail-card{margin-top:16px;background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:16px;max-width:620px}.detail-head{display:flex;justify-content:space-between;align-items:center}.detail-head b{color:#fff}.detail-head button{background:var(--input);border:1px solid var(--border);color:var(--tx1);border-radius:4px;padding:4px 10px;cursor:pointer}.detail-meta{display:flex;flex-wrap:wrap;gap:6px 14px;margin:10px 0;font-size:12px;color:var(--tx2)}ul.activity{list-style:none;margin:6px 0 0;padding:0;font-size:12px}ul.activity li{display:flex;gap:10px;align-items:baseline;padding:4px 0;border-bottom:1px solid var(--line)}ul.activity code{color:#8fd0ff}.modal-back{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000008c;display:grid;place-items:center;z-index:100}.modal{background:var(--panel);border:1px solid var(--accent);border-radius:8px;padding:20px;width:440px;max-width:92vw}.modal h3{margin:0 0 8px}.modal input{width:100%;box-sizing:border-box;background:var(--input);border:1px solid var(--border);border-radius:4px;color:#fff;padding:8px;margin:8px 0}.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:8px}.modal-actions button{background:var(--input);border:1px solid var(--border);color:var(--tx1);border-radius:5px;padding:8px 14px;cursor:pointer}.cl-head{display:flex;align-items:center;gap:16px;margin-bottom:14px}.cl-head h2{margin:0}.cl-tabs{display:flex;gap:4px}.cl-tabs button{background:var(--input);border:1px solid var(--border);color:var(--tx2);border-radius:5px;padding:6px 12px;cursor:pointer;font:inherit}.cl-tabs button.on{background:var(--accent);border-color:var(--accent);color:#fff}.cl-head .primary{margin-left:auto}.cl-list{display:flex;flex-direction:column;gap:14px}.cl-entry{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:16px}.cl-entry.draft{border-style:dashed;border-color:var(--border);opacity:.92}.cl-entry header{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:10px}.cl-ver{font-size:16px;font-weight:700;color:#fff}.cl-title{margin-left:10px;color:var(--tx2)}.cl-draft{margin-left:10px;font-size:10px;text-transform:uppercase;letter-spacing:.06em;color:#ffcf82;border:1px solid #ffcf82;border-radius:3px;padding:1px 5px}.cl-items{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.cl-items li{display:flex;gap:10px;align-items:baseline;font-size:14px}.cl-cat{flex:none;font-size:10px;text-transform:uppercase;letter-spacing:.04em;border-radius:3px;padding:2px 7px;min-width:78px;text-align:center;font-weight:600}.cat-added{background:#1f3d2a;color:#8fe6a0}.cat-changed{background:#1f334d;color:#8fd0ff}.cat-deprecated{background:#3d371f;color:#e6d78f}.cat-removed{background:#3d1f22;color:#ff9b9b}.cat-fixed{background:#2c1f3d;color:#c9a0ff}.cat-security{background:#3d2a1f;color:#ffb682}.cl-actions{display:flex;gap:8px;margin-top:12px;padding-top:12px;border-top:1px solid var(--line)}.cl-actions button{background:var(--input);border:1px solid var(--border);color:var(--tx1);border-radius:4px;padding:5px 10px;cursor:pointer;font-size:12px}.cl-actions button.danger{color:#ff9b9b;border-color:#5a2a2a}.cl-modal{width:620px;max-width:94vw}.cl-edit-items{display:flex;flex-direction:column;gap:8px;margin:8px 0}.cl-edit-row{display:flex;gap:8px;align-items:center}.cl-edit-row select{flex:none;background:var(--input);border:1px solid var(--border);color:#fff;border-radius:4px;padding:7px;font:inherit}.cl-edit-row input{flex:1;background:var(--input);border:1px solid var(--border);color:#fff;border-radius:4px;padding:7px;font:inherit}.cl-edit-row .x{flex:none;background:none;border:none;color:var(--tx3);font-size:18px;cursor:pointer;padding:0 6px}.cl-add{align-self:flex-start;background:none;border:1px dashed var(--border);color:var(--tx2);border-radius:4px;padding:6px 12px;cursor:pointer;font-size:12px}
