:root{--bg:#0d1117;--card:#161b22;--bdr:#30363d;--txt:#e6edf3;--dim:#8b949e;--ok:#3fb950;--ok2:#238636;--blue:#58a6ff;--err:#f85149;--ai:#7c3aed;--ai2:#6d28d9;--grid:rgba(63,185,80,.06)}
*{box-sizing:border-box;margin:0;padding:0}
html,body{min-height:100vh;font-family:Outfit,system-ui,sans-serif;background:var(--bg);color:var(--txt);background-image:linear-gradient(var(--grid) 1px,transparent 1px),linear-gradient(90deg,var(--grid) 1px,transparent 1px);background-size:48px 48px}
.wrap{max-width:1280px;margin:0 auto;padding:1.5rem 1rem}
.hd{text-align:center;margin-bottom:1.5rem}
.hd h1{font-size:1.75rem;font-weight:700;letter-spacing:-.02em;margin-bottom:.25rem}
.hd p{font-size:.95rem;color:var(--dim)}
.badge{display:inline-block;font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;padding:.25rem .5rem;border-radius:4px;background:var(--ok2);color:var(--bg);margin-top:.5rem}
.env-badge{display:inline-block;font-size:.65rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;padding:.2rem .45rem;border-radius:4px;margin-top:.5rem;margin-left:.5rem;vertical-align:middle}
.env-badge{background:var(--ok2);color:var(--bg)}
.env-badge.dev{background:#b45309;color:#fff}
.env-badge.uat{background:#0d7377;color:#fff}
.cols{display:grid;grid-template-columns:1fr 380px;gap:1.5rem;align-items:start}.right-col{position:sticky;top:1rem;align-self:start}
@media(max-width:860px){html,body{overflow-x:hidden}.wrap{overflow-x:hidden;max-width:100vw}.cols{grid-template-columns:1fr}.cols>*{min-width:0}.right-col{position:static;align-self:stretch}.ai-panel{min-height:420px;max-height:72vh;height:72vh}.sb input[type=text]{min-width:0}.left-col{min-width:0}}
.pnl{background:var(--card);border:1px solid var(--bdr);border-radius:12px;padding:1.25rem;margin-bottom:1.25rem}
.pnl h2{font-size:1.05rem;font-weight:600;margin-bottom:.25rem}
.hint{font-size:.85rem;color:var(--dim);margin-bottom:1rem}
.fr{margin-bottom:1rem}
.lb{display:block;font-size:.8rem;font-weight:600;color:var(--dim);margin-bottom:.35rem}
.ti{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem}
.ti .or{font-size:.85rem;color:var(--dim)}
.sl,.inp,textarea{background:var(--bg);border:1px solid var(--bdr);border-radius:8px;color:var(--txt);font-size:.95rem;font-family:inherit;padding:.5rem .75rem;outline:none}
.sl:focus,.inp:focus,textarea:focus{border-color:var(--ok)}
textarea{width:100%;resize:vertical;min-height:90px}
.fl{margin-top:.5rem}.fl input{position:absolute;width:0;height:0;opacity:0}
.fl label{font-size:.85rem;color:var(--blue);cursor:pointer;text-decoration:underline}
.btn{font-family:Outfit,sans-serif;font-weight:600;font-size:.9rem;padding:.5rem 1rem;border-radius:8px;border:none;cursor:pointer;background:var(--ok);color:var(--bg);transition:background .2s}
.btn:hover:not(:disabled){background:#4cd45a}.btn:disabled{opacity:.6;cursor:not-allowed}
.sb{background:var(--card);border:1px solid var(--bdr);border-radius:12px;padding:.75rem 1rem;display:flex;align-items:center;gap:.75rem;margin-bottom:1.25rem;transition:border-color .2s,box-shadow .2s}
.sb:focus-within{border-color:var(--ok);box-shadow:0 0 0 3px rgba(63,185,80,.15)}
.sb input[type=text]{flex:1;background:transparent;border:none;color:var(--txt);font-size:1rem;font-family:inherit;outline:none}
.sb input::placeholder{color:var(--dim)}.sb .sl{flex-shrink:0;max-width:140px}
.sb button{font-family:Outfit,sans-serif;font-weight:600;font-size:.9rem;padding:.5rem 1rem;border-radius:8px;border:none;background:var(--ok);color:var(--bg);cursor:pointer}
.sb button:disabled{opacity:.6;cursor:not-allowed}
.results{display:flex;flex-direction:column;gap:1rem}
.rc{background:var(--card);border:1px solid var(--bdr);border-radius:12px;padding:1.25rem 1.4rem;cursor:pointer;transition:transform .2s,box-shadow .2s,border-color .2s;position:relative;overflow:hidden}
.rc::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:linear-gradient(180deg,var(--ok),var(--blue));opacity:.7;border-radius:12px 0 0 12px}
.rc:hover{border-color:var(--ok);box-shadow:0 8px 24px rgba(0,0,0,.35);transform:translateY(-2px)}
.rc .meta{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;margin-bottom:.6rem}
.rc .score-badge{font-size:.7rem;font-weight:700;font-family:'JetBrains Mono',monospace;padding:.2rem .5rem;border-radius:6px;background:rgba(63,185,80,.15);color:var(--ok)}
.rc .topic-tag{font-size:.7rem;font-weight:600;padding:.2rem .5rem;border-radius:6px;background:rgba(88,166,255,.12);color:var(--blue)}.rc .source-badge{font-size:.68rem;font-weight:600;padding:.15rem .4rem;border-radius:4px;background:rgba(124,58,237,.15);color:var(--ai)}.source-filter-row{display:flex;align-items:center;gap:.5rem;margin-bottom:.75rem}.source-filter-row .sl{max-width:140px}
.rc .rc-headline{font-size:.95rem;font-weight:600;color:var(--txt);line-height:1.4;margin-bottom:.35rem;display:block}
.rc .preview{font-size:.84rem;line-height:1.6;color:var(--dim);margin:0 0 .75rem;display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}
.rc-actions{display:flex;align-items:center;gap:.6rem;margin-top:.6rem;padding-top:.6rem;border-top:1px solid var(--bdr)}
.rc .read-more{font-size:.8rem;color:var(--blue);font-weight:600;background:none;border:none;cursor:pointer;padding:.3rem 0}
.rc .read-more:hover{text-decoration:underline}
.rc .ask-ai-btn{font-size:.78rem;font-weight:600;color:#fff;background:var(--ai);border:none;cursor:pointer;padding:.35rem .75rem;border-radius:6px;transition:background .2s}
.rc .ask-ai-btn:hover{background:var(--ai2)}
.tts-btn{background:none;border:1px solid var(--bdr);color:var(--dim);font-size:.85rem;padding:.25rem .5rem;border-radius:6px;cursor:pointer;margin-left:auto;transition:color .2s,border-color .2s}
.tts-btn:hover{color:var(--ok);border-color:var(--ok)}
.tts-btn.tts-active{color:var(--err);border-color:var(--err)}.tts-btn.tts-active::after{content:" Stop";font-size:.75em;opacity:.9}
.bookmark-btn{background:none;border:none;color:var(--dim);font-size:1.1rem;cursor:pointer;padding:.2rem .35rem;line-height:1;transition:color .2s}
.bookmark-btn:hover{color:var(--ok)}
.bookmark-btn.bookmarked{color:#e6a700}
.bookmarks-section{margin-bottom:1rem}
.bookmarks-section .bm-hdr{font-size:.85rem;font-weight:600;color:var(--dim);margin-bottom:.5rem;display:flex;align-items:center;gap:.35rem}
.bookmarks-section .bm-toggle-btn{background:none;border:none;cursor:pointer;font-size:.85rem;font-weight:600;color:var(--dim);display:flex;align-items:center;gap:.35rem;padding:.25rem 0;margin-bottom:.5rem}
.bookmarks-section .bm-toggle-btn:hover{color:var(--blue)}
.bookmarks-section .bm-arrow{font-size:.7rem;opacity:.8}
.bookmarks-section .bm-results{display:flex;flex-direction:column;gap:1rem}
.bookmarks-section.collapsed .bm-results{display:none}
.cb{position:relative}
.cb-actions{display:flex;align-items:center;justify-content:space-between;gap:.5rem;margin-top:.5rem;flex-wrap:wrap}
.cb .tts-btn{position:absolute;bottom:0;right:0;margin:0}
.cb .cb-actions .tts-btn{position:static;margin:0}
.modal-box .tts-btn{position:absolute;bottom:1rem;right:1rem}
.delete-kb-btn{background:rgba(220,53,69,.2);color:#dc3545;border:1px solid #dc3545;font-size:.8rem;padding:.35rem .75rem;border-radius:6px;cursor:pointer;margin-left:.5rem;margin-top:.5rem}
.delete-kb-btn:hover{background:rgba(220,53,69,.35)}
.delete-kb-btn:disabled{opacity:.6;cursor:not-allowed}
.edit-kb-btn{background:rgba(88,166,255,.2);color:var(--blue);border:1px solid var(--blue);font-size:.8rem;padding:.35rem .75rem;border-radius:6px;cursor:pointer;margin-left:.5rem;margin-top:.5rem}
.edit-kb-btn:hover{background:rgba(88,166,255,.35)}
.edit-kb-btn:disabled{opacity:.6;cursor:not-allowed}
.modal-edit-form textarea{min-height:max(50vh,420px);max-height:75vh;margin-bottom:.75rem;resize:vertical}
.modal-edit-form .lb{margin-top:.5rem}
.modal-edit-form .modal-edit-btns{margin-top:1rem;display:flex;gap:.5rem}
.modal-box:has(.modal-edit-form){max-width:960px;min-height:60vh;max-height:95vh;overflow-y:auto}.tts-stop-bar{display:none;position:fixed;bottom:1rem;left:50%;transform:translateX(-50%);z-index:300}.tts-stop-btn{background:var(--err);color:#fff;border:none;padding:.5rem 1rem;border-radius:8px;font-weight:600;cursor:pointer;font-size:.9rem;box-shadow:0 4px 12px rgba(0,0,0,.4)}body.tts-speaking .tts-stop-bar{display:flex;justify-content:center}
.msg{font-size:.9rem;text-align:center;padding:.75rem}.msg.ok{color:var(--ok)}.msg.err{color:var(--err)}.msg.load{color:var(--blue)}
.md{font-size:.9rem;line-height:1.7;color:var(--txt)}
.md h1{font-size:1.45rem;font-weight:700;margin:1.1rem 0 .55rem;color:var(--blue);border-bottom:2px solid rgba(88,166,255,.2);padding-bottom:.4rem}
.md h2{font-size:1.18rem;font-weight:700;margin:1rem 0 .45rem;color:var(--blue);border-left:3px solid var(--blue);padding-left:.6rem}
.md h3{font-size:1rem;font-weight:600;margin:.85rem 0 .35rem;color:var(--ok);border-left:2px solid rgba(63,185,80,.4);padding-left:.5rem}
.md h4{font-size:.78rem;font-weight:700;margin:.7rem 0 .25rem;text-transform:uppercase;letter-spacing:.08em;color:var(--dim)}
.md p{margin:.45rem 0;line-height:1.7}
.md ul{margin:.45rem 0;padding:0;list-style:none}
.md ol{margin:.45rem 0;padding-left:1.4rem}
.md li{margin:.28rem 0;line-height:1.6}
.md ul>li{padding-left:1.25rem;position:relative}
.md ul>li::before{content:"▸";position:absolute;left:0;color:var(--ok);font-size:.85em;line-height:1.6}
.md strong{color:var(--txt);font-weight:700}
.md em{color:var(--dim);font-style:italic}
.md .ic{background:rgba(88,166,255,.12);color:var(--blue);font-family:'JetBrains Mono',monospace;font-size:.82em;padding:.1em .35em;border-radius:4px;border:1px solid rgba(88,166,255,.18)}
.md hr{border:none;border-top:1px solid var(--bdr);margin:1rem 0}
.md blockquote{border-left:3px solid var(--ai);margin:.6rem 0;padding:.45rem .75rem;background:rgba(124,58,237,.07);border-radius:0 8px 8px 0;color:var(--dim);font-style:italic}
.code-box{background:#0a0e14;border:1px solid var(--bdr);border-radius:10px;margin:.8rem 0;overflow:hidden}
.code-hdr{display:flex;align-items:center;justify-content:space-between;padding:.3rem .75rem;background:rgba(255,255,255,.035);border-bottom:1px solid var(--bdr)}
.code-lang{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:var(--ok);font-family:'JetBrains Mono',monospace}
.code-copy{background:none;border:1px solid var(--bdr);color:var(--dim);font-size:.7rem;padding:.15rem .5rem;border-radius:5px;cursor:pointer;transition:all .2s;font-family:inherit}
.code-copy:hover{border-color:var(--ok);color:var(--ok)}
.code-box pre{margin:0;padding:.9rem 1rem;overflow-x:auto}
.code-box code{font-family:'JetBrains Mono',monospace;font-size:.83rem;line-height:1.65;color:#e6edf3;display:block}
/* Modal */
.modal-bg{display:none;position:fixed;inset:0;background:rgba(0,0,0,.75);z-index:200;overflow-y:auto;padding:2rem 1rem}
.modal-bg.open{display:flex;align-items:flex-start;justify-content:center}
.modal-box{background:var(--card);border:1px solid var(--bdr);border-radius:14px;width:100%;max-width:860px;margin:auto;padding:2rem 2rem 1.75rem;position:relative}
.modal-close{position:absolute;top:.6rem;right:.75rem;background:transparent;border:none;color:var(--dim);font-size:1.4rem;cursor:pointer;line-height:1;padding:.2rem .4rem}
.modal-close:hover{color:var(--txt)}
/* AI Chat Panel */
.ai-panel{background:var(--card);border:1px solid var(--bdr);border-radius:12px;display:flex;flex-direction:column;height:calc(100vh - 140px);min-height:500px;height:calc(100vh - 4rem)}
.ai-panel-hd{padding:.85rem 1rem;border-bottom:1px solid var(--bdr);display:flex;align-items:center;justify-content:space-between;flex-shrink:0}
.ai-panel-hd h2{font-size:1rem;font-weight:600;color:var(--txt)}
.ai-panel-hd .model-tag{font-size:.7rem;color:var(--ai);font-weight:600;background:rgba(124,58,237,.12);padding:.15rem .4rem;border-radius:4px}
.ai-panel-hd .clr-btn{background:none;border:none;color:var(--dim);font-size:.78rem;cursor:pointer;padding:.2rem .4rem;border-radius:4px}
.web-toggle{font-size:.75rem;font-weight:600;padding:.25rem .65rem;border-radius:6px;border:1px solid var(--bdr);cursor:pointer;background:transparent;color:var(--dim);transition:background .2s,color .2s,border-color .2s,box-shadow .2s;white-space:nowrap;display:flex;align-items:center;gap:.3rem;letter-spacing:.02em}
.web-toggle.on{background:rgba(88,166,255,.18);color:var(--blue);border-color:var(--blue);box-shadow:0 0 0 2px rgba(88,166,255,.15)}
.web-searching{font-size:.78rem;color:var(--blue);padding:.2rem .5rem;display:flex;align-items:center;gap:.35rem;animation:pulse 1.2s infinite}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.45}}
.sources-box{margin:.4rem 0 0;padding:.5rem .75rem;background:rgba(88,166,255,.06);border:1px solid rgba(88,166,255,.18);border-radius:8px;font-size:.75rem}
.sources-box .src-hd{color:var(--blue);font-weight:600;margin-bottom:.25rem}
.sources-box a{color:var(--blue);display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;text-decoration:none;margin-bottom:.1rem}
.sources-box a:hover{text-decoration:underline}
.web-badge{font-size:.65rem;font-weight:700;padding:.1rem .35rem;border-radius:4px;background:rgba(88,166,255,.18);color:var(--blue);vertical-align:middle;margin-left:.35rem}
.lang-toggle{font-size:.75rem;font-weight:700;padding:.25rem .55rem;border-radius:6px;border:1px solid var(--bdr);cursor:pointer;background:transparent;color:var(--dim);transition:background .2s,color .2s,border-color .2s;white-space:nowrap;letter-spacing:.04em}
.lang-toggle.bn{background:rgba(63,185,80,.15);color:var(--ok);border-color:var(--ok);box-shadow:0 0 0 2px rgba(63,185,80,.12)}
.lang-badge{font-size:.65rem;font-weight:700;padding:.1rem .35rem;border-radius:4px;background:rgba(63,185,80,.15);color:var(--ok);vertical-align:middle;margin-left:.35rem}
.ai-panel-hd .clr-btn:hover{color:var(--txt);background:var(--bdr)}
.chat-history{flex:1;overflow-y:auto;padding:.75rem 1rem;display:flex;flex-direction:column;gap:.75rem}
.chat-history:empty::before{content:"Ask anything about electrical, mechanical or programming topics. Search for a result and click Ask AI to use it as context.";color:var(--dim);font-size:.85rem;line-height:1.55;display:block;padding:.5rem 0}
.cm{display:flex;flex-direction:column;gap:.2rem;max-width:100%}
.cm.user .cb{background:rgba(63,185,80,.1);border:1px solid rgba(63,185,80,.2);color:var(--txt);align-self:flex-end;border-radius:12px 12px 2px 12px;font-size:.9rem;padding:.5rem .75rem;max-width:90%;white-space:pre-wrap;word-break:break-word}
.cm.ai .cb{background:rgba(124,58,237,.08);border:1px solid rgba(124,58,237,.2);border-radius:2px 12px 12px 12px;padding:.9rem 1.1rem;font-size:.93rem;line-height:1.65;width:100%;max-width:100%;overflow-x:auto;word-wrap:break-word;overflow-wrap:break-word}
.cm.ai .cb .md{font-size:inherit;line-height:1.7}
.cm.ai .cb .md p,.cm.ai .cb .md li{margin:.4rem 0}
.cm.ai .cb .md ol,.cm.ai .cb .md ul{margin:.5rem 0 1rem;padding-left:1.35rem}
.cb .katex{font-size:1.05em}
.cb .katex-display{margin:.6rem 0;overflow-x:auto;overflow-y:hidden}
.ctx-badge{font-size:.72rem;color:var(--ai);background:rgba(124,58,237,.1);border:1px solid rgba(124,58,237,.2);padding:.15rem .5rem;border-radius:20px;margin-bottom:.4rem;display:flex;align-items:center;gap:.3rem;flex-wrap:wrap}
.ctx-badge button{background:none;border:none;color:var(--dim);cursor:pointer;font-size:.78rem;padding:0 .2rem;line-height:1}
.ctx-badge button:hover{color:var(--err)}
.ai-input-row{padding:.75rem 1rem;border-top:1px solid var(--bdr);flex-shrink:0}
.ai-input-row textarea{width:100%;background:var(--bg);border:1px solid var(--bdr);border-radius:8px;color:var(--txt);font-family:inherit;font-size:.9rem;padding:.5rem .75rem;resize:none;outline:none;min-height:60px;max-height:120px}
.ai-input-row textarea:focus{border-color:var(--ai)}
.ai-input-row textarea.dragover{border-color:var(--ai);box-shadow:0 0 0 3px rgba(124,58,237,.2)}
.ai-btns{display:flex;gap:.5rem;margin-top:.5rem;align-items:center}
.ai-send{background:var(--ai);color:#fff;font-family:Outfit,sans-serif;font-weight:600;font-size:.9rem;padding:.45rem 1rem;border-radius:8px;border:none;cursor:pointer;flex:1}
.ai-send:hover:not(:disabled){background:var(--ai2)}.ai-send:disabled{opacity:.6;cursor:not-allowed}
.ai-hint{font-size:.72rem;color:var(--dim)}.save-kb-btn{margin-top:.4rem;align-self:flex-start;background:none;border:1px solid var(--bdr);color:var(--dim);font-size:.7rem;padding:2px 8px;border-radius:6px;cursor:pointer;transition:all .2s}
.save-kb-btn:hover{border-color:var(--acc);color:var(--acc)}
.kb-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,.6);z-index:300;align-items:center;justify-content:center}
.kb-overlay.open{display:flex}
.kb-pop{background:var(--card);border:1px solid var(--bdr);border-radius:14px;padding:1.4rem 1.5rem;width:100%;max-width:380px;display:flex;flex-direction:column;gap:.8rem}
.kb-pop h3{margin:0;font-size:1rem;color:var(--fg)}
.kb-pop label{font-size:.8rem;color:var(--dim);margin-bottom:.2rem;display:block}
.kb-pop select,.kb-pop input[type=text]{width:100%;background:var(--bg);color:var(--fg);border:1px solid var(--bdr);border-radius:8px;padding:.45rem .7rem;font-size:.85rem;box-sizing:border-box}
.kb-pop-btns{display:flex;gap:.6rem;justify-content:flex-end}
.kb-cancel{background:none;border:1px solid var(--bdr);color:var(--dim);padding:.4rem .9rem;border-radius:8px;cursor:pointer;font-size:.85rem}
.kb-save{background:var(--acc);color:#fff;border:none;padding:.4rem .9rem;border-radius:8px;cursor:pointer;font-size:.85rem;font-weight:600}
.kb-save:disabled{opacity:.6;cursor:not-allowed}
.toast{position:fixed;bottom:1.5rem;left:50%;transform:translateX(-50%) translateY(4rem);background:#1a1a2e;border:1px solid var(--acc);color:var(--fg);padding:.55rem 1.2rem;border-radius:10px;font-size:.85rem;z-index:400;opacity:0;transition:all .35s;pointer-events:none}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}.md-img-gallery{display:flex;flex-wrap:nowrap;gap:.4rem;margin:.7rem 0;border-radius:10px;overflow:hidden}
.md-img-gallery.wrap{flex-wrap:wrap}
.md-img-gallery .md-img-cell{flex:1 1 0;min-width:0;height:200px;overflow:hidden;cursor:zoom-in;position:relative}
.md-img-gallery .md-img-cell img{width:100%;height:100%;object-fit:cover;transition:transform .25s;display:block}
.md-img-gallery .md-img-cell img:hover{transform:scale(1.06)}
.md-img-gallery.single .md-img-cell{height:220px;max-width:65%;flex:0 0 65%}
.md-img-gallery.two .md-img-cell{height:200px}
@media(max-width:600px){.wrap{padding:1rem .75rem}.hd h1{font-size:1.5rem}.hd p{font-size:.9rem}.ti{flex-direction:column;align-items:stretch}.ti .sl,.ti .inp{width:100%;min-width:0}.sb{flex-wrap:wrap}.sb .sl{max-width:100%;width:100%}.sb button{min-height:44px}.rc{padding:1rem}.ai-panel-hd{flex-wrap:wrap;gap:.5rem}.ai-panel-hd>div:first-child{flex:1 1 100%}.ai-panel-hd select{min-width:0;max-width:100%}.modal-bg{padding:1rem}.modal-box{margin:1rem;width:calc(100% - 2rem);max-width:none;max-height:90vh;overflow-y:auto;padding:1.25rem 1rem}.ai-panel-hd>div:first-child{min-width:0}.rc-actions{flex-wrap:wrap}.cm .cb{word-break:break-word;overflow-wrap:break-word}.modal-close{padding:.5rem;min-height:44px;min-width:44px}.md-img-gallery{flex-wrap:wrap}.md-img-gallery .md-img-cell{min-width:120px;flex:1 1 120px}.btn,.ai-send{min-height:44px}.rc .read-more,.rc .ask-ai-btn,.rc .tts-btn{padding:.5rem;min-height:44px}.web-toggle,.lang-toggle,.ai-panel-hd .clr-btn{padding:.4rem;min-height:44px}}
@media(max-width:480px){.wrap{padding:.75rem .5rem}.hd h1{font-size:1.25rem}.hd p{font-size:.85rem}.pnl{padding:1rem}.rc{padding:.85rem}.modal-box{padding:.75rem 1rem}.kb-pop{max-width:calc(100vw - 2rem);padding:1rem 1.25rem}.kb-cancel,.kb-save{min-height:44px}.md-img-gallery .md-img-cell{height:160px;min-width:100px}}
@media(max-width:600px){.hd{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:.35rem}.md .code-box,.cb .code-box{max-width:100%;min-width:0}}
/* KB Management Panel */
.kbm-table{width:100%;border-collapse:collapse;font-size:.8rem;margin-top:.25rem}
.kbm-table th,.kbm-table td{padding:.35rem .5rem;border-bottom:1px solid var(--bdr);vertical-align:top}
.kbm-table th{text-align:left;font-weight:600;color:var(--dim);font-size:.78rem}
.kbm-row-preview{color:var(--dim);line-height:1.4}
.kbm-status{font-size:.8rem;color:var(--dim);margin-top:.25rem}
.kbm-actions{margin-top:.5rem;display:flex;gap:.5rem;align-items:center}
.kbm-actions .kb-cancel{font-size:.8rem}

/* ═══════════════════════════════════════════
   KNOWLEDGE GRAPH PAGE
   ═══════════════════════════════════════════ */

/* ── Body/Shell ── */
.kg-body{margin:0;padding:0;overflow:hidden;height:100vh;background:var(--bg)}
.kg-shell{display:flex;height:100vh;overflow:hidden}

/* ── Loading overlay ── */
.kg-loading{position:fixed;inset:0;z-index:500;background:rgba(13,17,23,.92);display:flex;align-items:center;justify-content:center;backdrop-filter:blur(4px)}
.kg-loading-inner{text-align:center;display:flex;flex-direction:column;align-items:center;gap:.75rem}
.kg-spinner{width:40px;height:40px;border:3px solid rgba(63,185,80,.2);border-top-color:var(--ok);border-radius:50%;animation:kg-spin .8s linear infinite}
@keyframes kg-spin{to{transform:rotate(360deg)}}
.kg-loading-text{font-size:1rem;font-weight:600;color:var(--txt)}
.kg-loading-sub{font-size:.8rem;color:var(--dim)}

/* ── Left Sidebar ── */
.kg-sidebar{width:220px;flex-shrink:0;background:rgba(22,27,34,.97);border-right:1px solid var(--bdr);display:flex;flex-direction:column;overflow:hidden}
.kg-sidebar-hd{padding:.85rem 1rem .7rem;border-bottom:1px solid var(--bdr);display:flex;flex-wrap:wrap;align-items:center;gap:.4rem}
.kg-logo-link{text-decoration:none}
.kg-logo{font-weight:700;font-size:1rem;color:var(--txt);letter-spacing:-.02em}
.kg-feature-badge{font-size:.6rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;padding:.2rem .45rem;border-radius:4px;background:rgba(163,113,247,.25);color:#a371f7}
.kg-sidebar-section{padding:.75rem 1rem;border-bottom:1px solid rgba(48,54,61,.5);overflow-y:auto;flex:1 1 auto}
.kg-sidebar-section:last-child{flex:0 0 auto;border-bottom:none}
.kg-section-label{font-size:.65rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--dim);margin-bottom:.6rem}
.kg-topic-list{display:flex;flex-direction:column;gap:2px;overflow-y:auto;max-height:calc(100vh - 260px)}
.kg-topic-item{display:flex;align-items:center;gap:.5rem;padding:.35rem .5rem;border-radius:7px;cursor:pointer;transition:background .15s;font-size:.8rem;user-select:none}
.kg-topic-item:hover{background:rgba(255,255,255,.06)}
.kg-topic-item.active{background:rgba(63,185,80,.12);border:1px solid rgba(63,185,80,.25)}
.kg-topic-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}
.kg-topic-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--txt)}
.kg-topic-count{font-size:.7rem;font-weight:600;color:var(--dim);font-family:'JetBrains Mono',monospace;background:rgba(255,255,255,.06);padding:.1rem .35rem;border-radius:4px}
.kg-stat-row{display:flex;justify-content:space-between;align-items:center;padding:.3rem 0;font-size:.82rem}
.kg-stat-label{color:var(--dim)}
.kg-stat-val{font-weight:600;color:var(--txt);font-family:'JetBrains Mono',monospace}
.kg-sidebar-placeholder{font-size:.8rem;color:var(--dim);padding:.25rem 0}

/* ── Main Canvas ── */
.kg-main{flex:1;display:flex;flex-direction:column;overflow:hidden;position:relative}
.kg-toolbar{display:flex;align-items:center;justify-content:space-between;padding:.6rem 1rem;border-bottom:1px solid var(--bdr);background:rgba(22,27,34,.85);backdrop-filter:blur(6px);flex-shrink:0;gap:.5rem;flex-wrap:wrap}
.kg-toolbar-left{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap}
.kg-ctrl-btn{display:flex;align-items:center;gap:.4rem;font-family:Outfit,sans-serif;font-size:.78rem;font-weight:600;padding:.35rem .75rem;border-radius:7px;border:1px solid var(--bdr);cursor:pointer;background:rgba(255,255,255,.04);color:var(--dim);transition:all .2s}
.kg-ctrl-btn:hover{background:rgba(255,255,255,.09);color:var(--txt);border-color:rgba(255,255,255,.2)}
.kg-ctrl-btn.active{background:rgba(88,166,255,.15);color:var(--blue);border-color:var(--blue)}
.kg-back-link{font-size:.78rem;color:var(--dim);text-decoration:none;transition:color .2s}
.kg-back-link:hover{color:var(--blue)}
.kg-canvas-wrap{flex:1;position:relative;overflow:hidden}
.kg-svg{width:100%;height:100%;display:block;cursor:grab}
.kg-svg:active{cursor:grabbing}

/* ── D3 graph elements ── */
.kg-node{cursor:pointer}
.kg-node-label{font-size:.68rem;font-family:Outfit,sans-serif;fill:#c9d1d9;pointer-events:none;text-shadow:0 1px 3px rgba(0,0,0,.8)}
.kg-node--selected .kg-node-circle{filter:brightness(1.2)}
.kg--faded .kg-node-circle{opacity:.15}
.kg--faded .kg-node-label{opacity:.1}
.kg-link{stroke-linecap:round;transition:opacity .25s}
.kg-link--faded{opacity:.08 !important}

/* ── Tooltip ── */
.kg-tooltip{position:absolute;display:none;background:rgba(22,27,34,.95);border:1px solid var(--bdr);border-radius:8px;padding:.5rem .75rem;font-size:.78rem;color:var(--txt);pointer-events:none;z-index:50;backdrop-filter:blur(4px);max-width:200px;box-shadow:0 4px 16px rgba(0,0,0,.4)}
.kg-tooltip strong{display:block;margin-bottom:.15rem;font-size:.82rem}
.kg-tooltip span{color:var(--dim);font-size:.72rem}

/* ── Legend ── */
.kg-legend{position:absolute;bottom:1rem;left:1rem;background:rgba(22,27,34,.9);border:1px solid var(--bdr);border-radius:10px;padding:.75rem 1rem;font-size:.75rem;backdrop-filter:blur(6px)}
.kg-legend-title{font-size:.6rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--dim);margin-bottom:.6rem}
.kg-legend-item{display:flex;align-items:center;gap:.5rem;margin-bottom:.35rem;color:var(--dim)}
.kg-legend-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}
.kg-legend-line{display:inline-block;width:24px;height:2px;flex-shrink:0}
.kg-legend-line.strong{background:rgba(88,166,255,.8)}
.kg-legend-line.weak{background:rgba(200,200,255,.3)}
.kg-legend-sep{border-top:1px solid var(--bdr);margin:.5rem 0}

/* ── Zoom controls ── */
.kg-zoom-controls{position:absolute;right:1rem;top:50%;transform:translateY(-50%);display:flex;flex-direction:column;gap:4px}
.kg-zoom-btn{width:30px;height:30px;border-radius:7px;border:1px solid var(--bdr);background:rgba(22,27,34,.9);color:var(--dim);font-size:1rem;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s;font-family:monospace;backdrop-filter:blur(4px)}
.kg-zoom-btn:hover{background:rgba(255,255,255,.1);color:var(--txt);border-color:rgba(255,255,255,.25)}

/* ── Right Detail Panel ── */
.kg-detail-panel{width:280px;flex-shrink:0;background:rgba(22,27,34,.97);border-left:1px solid var(--bdr);display:flex;flex-direction:column;overflow:hidden}
.kg-detail-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;flex:1;padding:2rem 1.5rem;text-align:center;gap:1rem}
.kg-detail-empty-icon{font-size:2.5rem;opacity:.2;line-height:1}
.kg-detail-empty-text{font-size:.85rem;color:var(--dim);line-height:1.5}
.kg-detail-content{display:flex;flex-direction:column;overflow-y:auto;flex:1;padding:1rem}
.kg-detail-hd{display:flex;align-items:center;justify-content:space-between;margin-bottom:.75rem}
.kg-detail-label{font-size:.6rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--dim)}
.kg-detail-close{background:none;border:none;color:var(--dim);cursor:pointer;font-size:.9rem;padding:.15rem .35rem;border-radius:5px;transition:color .2s}
.kg-detail-close:hover{color:var(--err)}
.kg-detail-topic-name{font-size:1.1rem;font-weight:700;color:var(--txt);margin-bottom:.75rem;line-height:1.3}
.kg-detail-meta{background:rgba(255,255,255,.03);border:1px solid var(--bdr);border-radius:8px;padding:.6rem .75rem;margin-bottom:.9rem;display:flex;flex-direction:column;gap:.35rem}
.kg-detail-meta-row{display:flex;align-items:center;justify-content:space-between;font-size:.8rem}
.kg-detail-meta-label{color:var(--dim)}
.kg-detail-meta-val{font-weight:600;color:var(--txt)}
.kg-domain-badge{padding:.15rem .45rem;border-radius:5px;font-size:.72rem}
.kg-domain-electrical{background:rgba(88,166,255,.15);color:#58a6ff}
.kg-domain-mechanical{background:rgba(240,136,62,.15);color:#f0883e}
.kg-domain-control{background:rgba(163,113,247,.15);color:#a371f7}
.kg-domain-global{background:rgba(63,185,80,.15);color:var(--ok)}
.kg-detail-section-label{font-size:.6rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--dim);margin-bottom:.5rem}
.kg-related-list{display:flex;flex-direction:column;gap:.45rem;margin-bottom:.5rem}
.kg-related-item{display:flex;align-items:center;gap:.45rem;font-size:.78rem}
.kg-rel-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0}
.kg-rel-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--txt)}
.kg-rel-bar-wrap{width:70px;height:4px;background:rgba(255,255,255,.06);border-radius:2px;flex-shrink:0}
.kg-rel-bar{height:4px;border-radius:2px;transition:width .4s}
.kg-rel-pct{font-size:.68rem;color:var(--dim);font-family:'JetBrains Mono',monospace;width:30px;text-align:right;flex-shrink:0}
.kg-rel-empty{font-size:.78rem;color:var(--dim)}
.kg-records-list{display:flex;flex-direction:column;gap:.5rem}
.kg-rec-item{background:rgba(255,255,255,.03);border:1px solid var(--bdr);border-radius:8px;padding:.55rem .7rem}
.kg-rec-preview{font-size:.76rem;color:var(--dim);line-height:1.45;margin-bottom:.35rem}
.kg-rec-actions{display:flex;gap:.35rem}
.kg-rec-btn{font-size:.7rem;font-weight:600;padding:.2rem .5rem;border-radius:6px;border:none;cursor:pointer;background:rgba(124,58,237,.2);color:#a371f7;transition:background .2s}
.kg-rec-btn:hover{background:rgba(124,58,237,.4)}
.kg-records-placeholder{font-size:.78rem;color:var(--dim)}
.kg-detail-actions{margin-top:1rem;padding-top:.75rem;border-top:1px solid var(--bdr)}
.kg-detail-btn{display:block;text-align:center;padding:.45rem .75rem;border-radius:8px;background:rgba(63,185,80,.12);color:var(--ok);border:1px solid rgba(63,185,80,.25);font-size:.8rem;font-weight:600;text-decoration:none;cursor:pointer;transition:background .2s}
.kg-detail-btn:hover{background:rgba(63,185,80,.22)}

/* ── Responsive ── */
@media(max-width:1100px){.kg-detail-panel{width:240px}}
@media(max-width:900px){
  .kg-shell{flex-direction:column}
  .kg-sidebar{width:100%;height:auto;max-height:160px;flex-direction:row;overflow-x:auto;border-right:none;border-bottom:1px solid var(--bdr)}
  .kg-sidebar-hd{border-bottom:none;border-right:1px solid var(--bdr);min-width:140px;flex-direction:column;justify-content:center;padding:.5rem .75rem}
  .kg-sidebar-section{flex:0 0 auto;border-bottom:none;border-right:1px solid var(--bdr);overflow-y:hidden;overflow-x:auto;padding:.5rem .75rem}
  .kg-topic-list{flex-direction:row;max-height:none;flex-wrap:nowrap;gap:4px}
  .kg-topic-item{white-space:nowrap;padding:.25rem .5rem}
  .kg-stat-row{flex-direction:column;align-items:flex-start;gap:0}
  .kg-detail-panel{width:100%;height:260px;border-left:none;border-top:1px solid var(--bdr)}
  .kg-canvas-wrap{min-height:0;flex:1}
}
@media(max-width:600px){
  .kg-toolbar{padding:.4rem .6rem}
  .kg-ctrl-btn{font-size:.7rem;padding:.28rem .55rem}
  .kg-zoom-controls{display:none}
  .kg-legend{display:none}
}
