*{margin:0;padding:0;box-sizing:border-box}html,body{width:100%;height:100%;overflow:hidden}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Noto Sans SC,sans-serif;background:#f5f5f5;color:#333}#app{display:flex;height:100vh;width:100vw;overflow:hidden}.sidebar{width:200px;min-width:200px;background:#fff;border-right:1px solid #e0e0e0;display:flex;flex-direction:column;transition:min-width .2s,width .2s;z-index:20}.sidebar-header{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;border-bottom:1px solid #eee;background:#fafafa}.sidebar-header h2{font-size:14px;font-weight:600;color:#444;white-space:nowrap}.sidebar-toggle{width:26px;height:26px;border:1px solid #ddd;background:#fff;border-radius:4px;cursor:pointer;font-size:12px;color:#666;display:flex;align-items:center;justify-content:center;flex-shrink:0}.sidebar-toggle:hover{background:#f0f0f0}.blueprint-list{flex:1;overflow-y:auto}.blueprint-item{padding:10px 14px;cursor:pointer;border-bottom:1px solid #f0f0f0;transition:background .15s;white-space:nowrap;overflow:hidden}.blueprint-item:hover{background:#f0f4ff}.blueprint-item.active{background:#e8eeff;border-left:3px solid #4a7cff}.bp-name{display:block;font-size:13px;font-weight:600;color:#333}.bp-repo{display:block;font-size:11px;color:#999;margin-top:2px}.sidebar-open-btn{position:fixed;left:8px;top:8px;z-index:100;width:34px;height:34px;border:1px solid #ddd;background:#fff;border-radius:6px;cursor:pointer;font-size:16px;color:#666;align-items:center;justify-content:center;box-shadow:0 1px 4px #0000001f}.sidebar-open-btn:hover{background:#f0f0f0}.main{flex:1;display:flex;flex-direction:column;position:relative;min-width:0;min-height:0}.toolbar{display:flex;gap:4px;padding:6px 10px;background:#fff;border-bottom:1px solid #e0e0e0;z-index:10;flex-shrink:0}.toolbar button{width:30px;height:30px;border:1px solid #ddd;background:#fff;border-radius:4px;cursor:pointer;font-size:14px;color:#555;display:flex;align-items:center;justify-content:center}.toolbar button:hover{background:#f0f0f0}.graph-container{flex:1;position:relative;background:#fafafa;background-image:radial-gradient(circle,#e0e0e0 1px,transparent 1px);background-size:20px 20px;min-height:0;overflow:hidden}.graph-container svg{display:block;width:100%;height:100%}.detail-panel{width:260px;min-width:260px;background:#fff;border-left:1px solid #e0e0e0;overflow-y:auto;flex-shrink:0;z-index:10}.detail-title{padding:12px 14px;font-size:13px;font-weight:700;color:#333;border-bottom:1px solid #eee;background:#fafafa}.detail-content{padding:14px;font-size:12px;line-height:1.6;color:#444}.detail-content p{margin-bottom:6px}.detail-content strong{color:#222}.detail-content a{color:#4a7cff;text-decoration:none}.detail-content a:hover{text-decoration:underline}.detail-content ul,.detail-content ol{padding-left:18px;margin-bottom:6px}.detail-content code{background:#f0f0f0;padding:1px 4px;border-radius:3px;font-size:11px}.node rect{transition:filter .15s}.node:hover rect{filter:brightness(.94)}.node-content{padding:6px 8px;font-size:11px;line-height:1.4;color:#333;overflow:hidden;word-wrap:break-word}.node-content p{margin:0 0 3px}.node-content p:last-child{margin-bottom:0}.node-content strong{color:#111;font-weight:600}.node-content a{color:#4a7cff;text-decoration:none}.node-content em{color:#888}.empty-state{color:#aaa;font-size:13px;padding:30px 16px;text-align:center}.loading{color:#999;font-size:13px;padding:16px;text-align:center}.error{color:#d44;font-size:13px;padding:16px;text-align:center}@media(max-width:768px){#app{flex-direction:column}.sidebar{width:100%;min-width:100%;max-height:44px;border-right:none;border-bottom:1px solid #e0e0e0;overflow:hidden}.sidebar-header{padding:8px 12px}.blueprint-list{display:flex;overflow-x:auto;overflow-y:hidden;gap:0}.blueprint-item{border-bottom:none;border-right:1px solid #f0f0f0;padding:8px 14px;white-space:nowrap}.bp-repo{display:none}.detail-panel{display:none;position:fixed;bottom:0;left:0;right:0;width:100%;min-width:100%;max-height:40vh;border-left:none;border-top:1px solid #e0e0e0;box-shadow:0 -2px 8px #0000001a;z-index:50;overflow-y:auto}.detail-panel.mobile-open{display:block}.sidebar-open-btn{left:auto;right:8px;top:auto;bottom:8px}.node-content{font-size:10px;padding:4px 6px}}@media(max-width:480px){.sidebar{max-height:38px}.sidebar-header h2{font-size:13px}.blueprint-item{padding:6px 10px}.bp-name{font-size:12px}.toolbar{padding:4px 6px}.toolbar button{width:28px;height:28px;font-size:13px}}
