@import url('https://fonts.googleapis.com/css2?family=DM+Mono:wght@400;500&family=Manrope:wght@400;500;600;700;800&display=swap');
:root{--bg:#111412;--panel:#171b18;--panel2:#1d231f;--line:#303831;--text:#f0f2e9;--muted:#929b91;--gold:#d9a75d;--blue:#80a9bd;--green:#8ab58b;--red:#d77e6d}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font:14px Manrope,system-ui,sans-serif;overflow:hidden}.shell{display:grid;grid-template-columns:260px 1fr 320px;height:100vh}.sidebar,.inspector{background:var(--panel);border-right:1px solid var(--line);padding:24px 18px;display:flex;flex-direction:column}.inspector{border-right:0;border-left:1px solid var(--line)}.brand{display:flex;gap:10px;align-items:center;margin:3px 8px 30px}.brand-mark{display:grid;place-items:center;width:34px;height:34px;border-radius:10px;background:var(--gold);color:#1b1811;font-weight:800;font-size:18px}.brand b{display:block;font-size:16px}.brand small,.eyebrow,.inspector small{display:block;color:var(--muted);font:10px 'DM Mono';letter-spacing:.12em;margin-top:3px}.project-card{margin:0 8px 25px;padding:15px;border:1px solid #3a4038;border-radius:12px;background:linear-gradient(145deg,#222921,#171b18)}.project-card small{color:var(--muted)}.project-card strong{display:block;margin:7px 0 5px;font-size:14px}.project-card span,.sidebar-bottom p{font-size:11px;color:var(--muted);line-height:1.5}.nav{width:100%;text-align:left;background:none;border:0;color:var(--muted);padding:12px 10px;border-radius:9px;font-size:15px;cursor:pointer}.nav span{margin-left:8px;font-size:13px}.nav.active,.nav:hover{background:#293128;color:var(--text)}.source-tree{margin:28px 8px;color:var(--muted);font-size:12px;line-height:2.2}.source-tree b{color:var(--text)}.tree-title{font:10px 'DM Mono';letter-spacing:.14em;margin-bottom:8px;color:#647064}.tree-child{padding-left:20px}.source-tree em{float:right;color:var(--gold);font-style:normal}.sidebar-bottom{margin-top:auto}.primary{width:100%;border:0;border-radius:9px;background:var(--gold);color:#241b11;font-weight:800;padding:12px;cursor:pointer}.main{min-width:0;display:flex;flex-direction:column;background:#141815}.topbar{display:flex;justify-content:space-between;align-items:flex-start;padding:30px 34px 21px;border-bottom:1px solid var(--line)}h1{font-size:26px;letter-spacing:-.04em;margin:8px 0 0}.top-actions{display:flex;gap:10px}.ghost,.circle,.canvas-tools button{background:transparent;border:1px solid var(--line);color:var(--muted);padding:9px 13px;border-radius:8px;cursor:pointer}.circle{width:34px;height:34px;padding:0}.chapter-bar{height:65px;display:flex;align-items:center;gap:6px;padding:0 34px;border-bottom:1px solid var(--line);overflow:auto}.chapter{background:transparent;border:0;color:var(--muted);padding:10px 13px;border-radius:7px;white-space:nowrap;cursor:pointer}.chapter b{margin-left:5px;color:var(--gold);font:11px 'DM Mono'}.chapter.active,.chapter:hover{background:#293128;color:var(--text)}#chapterTabs{display:flex;gap:6px}.sync{margin-left:auto;color:var(--green);font:10px 'DM Mono';white-space:nowrap}.workspace{flex:1;position:relative;min-height:0}.canvas-toolbar{height:50px;position:absolute;z-index:3;left:20px;right:20px;top:14px;display:flex;justify-content:space-between;align-items:center;pointer-events:none}.legend,.canvas-tools{display:flex;align-items:center;gap:13px;pointer-events:auto}.legend{color:var(--muted);font-size:11px}.dot{display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:5px}.gold{background:var(--gold)}.blue{background:var(--blue)}.green{background:var(--green)}.red{background:var(--red)}.canvas-tools{background:#191e1a;border:1px solid var(--line);border-radius:9px;padding:4px 6px;gap:6px}.canvas-tools button{padding:5px 8px;border:0}.canvas-tools span{min-width:42px;text-align:center;color:var(--text);font:11px 'DM Mono'}.canvas{position:absolute;inset:0;overflow:hidden;cursor:grab}.canvas.dragging{cursor:grabbing}.grid{position:absolute;inset:-100%;background-image:radial-gradient(#536052 1px,transparent 1px);background-size:24px 24px;opacity:.17}.node{position:absolute;width:250px;border:1px solid var(--line);border-radius:12px;background:rgba(28,34,29,.96);box-shadow:0 12px 30px #05070588;overflow:hidden;cursor:pointer}.node:hover,.node.selected{border-color:var(--gold);transform:translateY(-2px)}.node-head{display:flex;justify-content:space-between;align-items:center;padding:12px 14px;border-bottom:1px solid var(--line);font-size:12px}.node-tag{font:10px 'DM Mono';color:var(--gold)}.node-body{padding:13px 14px}.node h3{font-size:14px;margin:0 0 8px}.node p{color:var(--muted);font-size:11px;line-height:1.6;margin:0;display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}.node-meta{display:flex;gap:8px;margin-top:12px;color:var(--muted);font:10px 'DM Mono'}.node.gold{border-top:2px solid var(--gold)}.node.blue{border-top:2px solid var(--blue)}.node.green{border-top:2px solid var(--green)}.node.red{border-top:2px solid var(--red)}.node img{width:100%;height:100px;object-fit:cover;display:block;opacity:.85}.empty{position:absolute;inset:0;display:grid;place-content:center;text-align:center;color:var(--muted);pointer-events:none}.empty strong{font-size:18px;color:var(--text);margin-bottom:8px}.empty span{font-size:12px}.inspector-head{display:flex;justify-content:space-between;align-items:flex-start;border-bottom:1px solid var(--line);padding-bottom:18px}.inspector h2{margin:8px 0 0;font-size:17px}.inspector-head button{background:none;border:0;color:var(--muted);font-size:22px;cursor:pointer}.inspector-empty{color:var(--muted);line-height:1.8;font-size:12px;padding-top:20px}.detail-label{color:var(--gold);font:10px 'DM Mono';letter-spacing:.12em;margin-top:22px}.detail-content{white-space:pre-wrap;color:#d7ddd3;line-height:1.7;font-size:12px;max-height:55vh;overflow:auto;margin-top:8px}.source{color:var(--muted);font:10px 'DM Mono';word-break:break-all}.drop-overlay{display:none;position:fixed;inset:0;z-index:10;background:#d9a75d22;backdrop-filter:blur(6px);place-items:center}.drop-overlay.show{display:grid}.drop-overlay>div{border:1px solid var(--gold);background:#1c231d;padding:42px 64px;border-radius:18px;text-align:center}.drop-overlay strong{display:block;font-size:22px}.drop-overlay span{display:block;color:var(--muted);margin-top:10px}
@media(max-width:1000px){.shell{grid-template-columns:220px 1fr}.inspector{display:none}.topbar{padding:22px}.chapter-bar{padding:0 22px}.canvas-toolbar{left:12px;right:12px}.legend{display:none}}@media(max-width:650px){.shell{display:block}.sidebar{height:auto;padding:12px;display:block}.brand{margin:0 0 10px}.project-card,.source-tree,nav{display:none}.sidebar-bottom{position:absolute;right:12px;top:10px}.sidebar-bottom p{display:none}.primary{padding:9px}.main{height:calc(100vh - 70px)}h1{font-size:20px}.topbar{padding:17px}.top-actions{display:none}}
.top-actions{align-items:center}.search{display:flex;align-items:center;gap:7px;background:#1b211d;border:1px solid var(--line);border-radius:8px;padding:0 9px;color:var(--muted)}.search input{width:190px;background:none;border:0;outline:0;color:var(--text);padding:10px 0;font:12px Manrope}.search kbd{font:10px 'DM Mono';border:1px solid var(--line);border-radius:4px;padding:3px 5px}.legend{gap:7px}.filter{background:#1b211d;border:1px solid var(--line);color:var(--muted);border-radius:6px;padding:7px 9px;font-size:11px;cursor:pointer}.filter.active,.filter:hover{background:#303b31;color:var(--text);border-color:#566455}.legend #resultCount{margin-left:7px;color:#768276;font:10px 'DM Mono'}.preview{display:block;width:100%;max-height:170px;object-fit:cover;border-radius:8px;margin-top:12px;border:1px solid var(--line)}.inspector-actions{display:flex;gap:8px;margin-top:16px}.inspector-actions button,.related-list button{background:#293128;color:var(--text);border:1px solid var(--line);border-radius:7px;padding:8px 10px;font-size:11px;cursor:pointer}.related-list{display:flex;flex-direction:column;gap:6px;margin-top:8px}.related-list button{text-align:left;color:var(--muted)}.toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);background:#d9a75d;color:#241b11;font-weight:800;padding:11px 17px;border-radius:8px;z-index:20;box-shadow:0 8px 25px #0008}
