*{margin:0;padding:0;box-sizing:border-box}
body{font-family:-apple-system,BlinkMacSystemFont,'PingFang SC','Microsoft YaHei',sans-serif;background:#ffffff;color:#333;height:100vh;overflow:hidden;display:flex;flex-direction:column}
.top-bar{display:flex;align-items:center;justify-content:space-between;padding:10px 20px;background:linear-gradient(135deg,#f8fafc,#f1f5f9);border-bottom:1px solid rgba(100,130,255,.15)}
.top-bar h1{font-size:18px;color:#000000;}
.main{display:flex;flex:1;overflow:hidden}
.sidebar{width:280px;min-width:200px;max-width:520px;background:rgba(255,255,255,.95);border-right:1px solid rgba(100,130,255,.12);overflow-y:auto;padding:14px;font-size:13px;box-shadow:0 0 10px rgba(0,0,0,0.05);flex-shrink:0;transition:width .1s;position:relative}
.sidebar::-webkit-scrollbar{width:3px}
.sidebar::-webkit-scrollbar-thumb{background:rgba(100,130,255,.25);border-radius:2px}
.sec{margin-bottom:16px}
.sec-title{color:#64748b;font-size:11px;text-transform:uppercase;letter-spacing:1px;margin-bottom:8px;padding-bottom:5px;border-bottom:1px solid rgba(100,130,255,.1)}
.info-text{color:#334155;line-height:1.7}
.info-text b{color:#1e293b}
.stats{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.stat{background:rgba(248,250,252,.8);border:1px solid rgba(100,130,255,.08);border-radius:7px;padding:8px;text-align:center;box-shadow:0 2px 4px rgba(0,0,0,0.03)}
.stat .v{font-size:20px;font-weight:700;background:linear-gradient(90deg,#2563eb,#7c3aed);-webkit-background-clip:text;-webkit-text-fill-color:transparent}
.stat .l{font-size:10px;color:#64748b;margin-top:2px}
.layer-row{display:flex;align-items:center;gap:7px;padding:4px 6px;border-radius:5px;cursor:pointer;font-size:12px;color:#1e293b;transition:.15s}
.layer-row:hover{background:rgba(100,130,255,.08)}
.layer-row.active{background:rgba(100,130,255,.15);font-weight:600}
.layer-dot{width:10px;height:10px;border-radius:2px;flex-shrink:0}
.layer-cnt{margin-left:auto;color:#64748b;font-size:11px}
.legend-row{display:flex;align-items:center;gap:7px;padding:3px 6px;font-size:12px;color:#334155}
.canvas-wrap{flex:1;position:relative;overflow:hidden;background:#f8fafc}
canvas{display:block;width:100%;height:100%}
.resize-handle{width:5px;cursor:col-resize;background:transparent;transition:background .15s;flex-shrink:0;z-index:20}
.resize-handle:hover,.resize-handle.active{background:rgba(59,130,246,.5)}
.sidebar-toggle{position:absolute;top:10px;right:8px;font-size:14px;color:#94a3b8;cursor:pointer;z-index:5;padding:2px 5px;border-radius:3px;transition:all .15s;line-height:1}
.detail-popup-btn{position:absolute;top:14px;right:14px;z-index:5;padding:4px 10px;background:rgba(251,146,60,.12);border:1px solid rgba(251,146,60,.35);border-radius:4px;font-size:11px;color:#ea580c;cursor:pointer;transition:background .15s}
.detail-popup-btn:hover{background:rgba(251,146,60,.22)}
.detail-popup-inline{display:block;width:100%;padding:8px 0;margin-bottom:12px;background:linear-gradient(135deg,rgba(251,146,60,.1),rgba(249,115,22,.05));border:1px dashed rgba(249,115,22,.45);border-radius:6px;font-size:12px;color:#ea580c;cursor:pointer;text-align:center;font-weight:600;transition:background .15s;letter-spacing:.5px}
.detail-popup-inline:hover{background:linear-gradient(135deg,rgba(251,146,60,.2),rgba(249,115,22,.1))}
.popup-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:1000;justify-content:center;align-items:center}
.popup-overlay.active{display:flex}
.popup-content{background:#fff;border-radius:12px;width:95vw;max-width:95vw;height:92vh;max-height:92vh;overflow:hidden;padding:0;box-shadow:0 24px 64px rgba(0,0,0,.25);position:relative;display:flex;flex-direction:column}
.popup-content .popup-header{display:flex;align-items:center;justify-content:space-between;padding:16px 24px;border-bottom:1px solid rgba(100,130,255,.12);flex-shrink:0}
.popup-content .popup-header .popup-title{font-size:16px;font-weight:700;color:#1e293b}
.popup-content .popup-header .popup-header-btns{display:flex;gap:6px;align-items:center}
.popup-content .popup-header .popup-header-btns button{background:none;border:1px solid rgba(100,130,255,.15);border-radius:6px;padding:4px 10px;font-size:12px;color:#64748b;cursor:pointer;transition:.15s}
.popup-content .popup-header .popup-header-btns button:hover{background:rgba(100,130,255,.08);color:#1e293b}
.popup-content .popup-body{flex:1;overflow-y:auto;padding:20px 24px}
.popup-close{position:static;background:none;border:none;font-size:20px;cursor:pointer;color:#94a3b8;line-height:1;padding:2px 6px;border-radius:4px}
.popup-close:hover{color:#334155;background:rgba(100,130,255,.08)}
.popup-mode-toggle{font-size:11px;padding:3px 8px;border-radius:4px;border:1px solid rgba(100,130,255,.2);background:rgba(100,130,255,.06);color:#2563eb;cursor:pointer;transition:.15s}
.popup-mode-toggle:hover{background:rgba(100,130,255,.12)}
.popup-content.window-mode{width:720px;max-width:90vw;height:auto;max-height:88vh}
.popup-content.window-mode .popup-body{max-height:calc(88vh - 60px)}
.popup-content.window-mode .popup-header .popup-mode-toggle{background:rgba(100,130,255,.06);color:#2563eb}
/* 弹窗内resize手柄 */
.popup-resize-handle{width:8px;cursor:col-resize;background:transparent;position:absolute;top:0;bottom:0;right:0;z-index:5;transition:background .15s}
.popup-resize-handle:hover,.popup-resize-handle.active{background:rgba(59,130,246,.4)}
/* 弹窗内拖拽分割线 - 用于弹窗内左右分栏 */
.popup-split{display:flex;flex:1;overflow:hidden;gap:0}
.popup-split-left{flex:1;overflow-y:auto;padding-right:12px}
.popup-split-right{width:360px;min-width:240px;max-width:560px;overflow-y:auto;padding-left:12px;border-left:1px solid rgba(100,130,255,.1);position:relative;flex-shrink:0;transition:width .1s}
.popup-split-resize{width:6px;cursor:col-resize;background:transparent;flex-shrink:0;transition:background .15s;margin:0 -3px;z-index:5;position:relative}
.popup-split-resize:hover,.popup-split-resize.active{background:rgba(59,130,246,.4);border-radius:3px}
.detail{width:420px;min-width:320px;max-width:680px;background:rgba(255,255,255,.95);border-left:1px solid rgba(100,130,255,.12);overflow-y:auto;padding:16px;font-size:13px;box-shadow:0 0 10px rgba(0,0,0,0.05);flex-shrink:0;transition:width .1s;position:relative;z-index:10}
.detail::-webkit-scrollbar{width:3px}
.detail::-webkit-scrollbar-thumb{background:rgba(100,130,255,.25);border-radius:2px}
.detail-placeholder{text-align:center;color:#94a3b8;margin-top:50px;font-size:14px}
.detail-placeholder .icon{font-size:36px;margin-bottom:10px;color:#64748b}
.d-name{font-size:17px;font-weight:700;color:#1e293b;margin-bottom:3px}
.d-type{display:inline-block;font-size:11px;padding:1px 8px;border-radius:8px;margin-bottom:10px}
.d-type.industry{background:rgba(59,130,246,.15);color:#2563eb;border:1px solid rgba(59,130,246,.25)}
.d-type.company{background:rgba(34,197,94,.15);color:#16a34a;border:1px solid rgba(34,197,94,.25)}
.d-meta{font-size:11px;color:#64748b;margin-bottom:10px}
.d-summary{font-size:12px;color:#334155;line-height:1.7;padding:8px;background:rgba(248,250,252,.8);border-radius:6px;border:1px solid rgba(100,130,255,.08);margin-bottom:14px}
.conn-title{font-size:11px;color:#64748b;text-transform:uppercase;letter-spacing:1px;margin-bottom:8px}
.conn-item{padding:6px 8px;margin-bottom:5px;background:rgba(248,250,252,.8);border-radius:5px;border:1px solid rgba(100,130,255,.06);cursor:pointer;font-size:11px;line-height:1.5;transition:.15s}
.conn-item:hover{background:rgba(240,245,255,.8);border-color:rgba(100,130,255,.18)}
.conn-tag{display:inline-block;font-size:9px;padding:0 5px;border-radius:3px;margin-right:3px}
.conn-tag.ct-contain{background:rgba(59,130,246,.18);color:#2563eb}
.conn-tag.ct-supply{background:rgba(251,146,60,.18);color:#f97316}
.conn-tag.ct-compete{background:rgba(239,68,68,.18);color:#ef4444}
.conn-tag.ct-synergy{background:rgba(34,197,94,.18);color:#16a34a}
.search-wrap{position:absolute;top:10px;left:50%;transform:translateX(-50%);z-index:5}
.search-wrap input{width:240px;padding:7px 12px 7px 30px;background:rgba(255,255,255,.95);border:1px solid rgba(100,130,255,.18);border-radius:8px;color:#1e293b;font-size:12px;outline:none;box-shadow:0 2px 4px rgba(0,0,0,0.05)}
.search-wrap input:focus{border-color:rgba(100,130,255,.45)}
.search-wrap input::placeholder{color:#94a3b8}
.search-wrap .si{position:absolute;left:10px;top:50%;transform:translateY(-50%);font-size:12px;color:#94a3b8}
.btns{position:absolute;bottom:12px;right:12px;display:flex;flex-direction:column;gap:4px;z-index:5}
.btn{width:32px;height:32px;border:1px solid rgba(100,130,255,.18);background:rgba(255,255,255,.9);color:#334155;border-radius:6px;cursor:pointer;font-size:16px;display:flex;align-items:center;justify-content:center;transition:.15s;box-shadow:0 2px 4px rgba(0,0,0,0.05)}
.btn:hover{background:rgba(240,245,255,.8);color:#1e293b}
.tooltip{position:absolute;pointer-events:none;background:rgba(255,255,255,.98);border:1px solid rgba(100,130,255,.25);border-radius:6px;padding:8px 12px;font-size:11px;color:#1e293b;max-width:260px;line-height:1.5;box-shadow:0 4px 16px rgba(0,0,0,.1);z-index:100;display:none}
/* 导航点样式 */
.nav-dots{display:flex;flex-direction:column;align-items:center;gap:8px;padding:10px 0;margin-bottom:16px;border-bottom:1px solid rgba(100,130,255,.1)}
.nav-dot{width:12px;height:12px;border-radius:50%;background:#e2e8f0;cursor:pointer;transition:.2s;position:relative}
.nav-dot:hover{background:#94a3b8}
.nav-dot.active{background:linear-gradient(135deg,#2563eb,#7c3aed);box-shadow:0 0 8px rgba(37,99,235,.4)}
.nav-dot-label{position:absolute;left:20px;top:50%;transform:translateY(-50%);font-size:10px;color:#64748b;white-space:nowrap;max-width:180px;overflow:hidden;text-overflow:ellipsis}
.nav-dot.active .nav-dot-label{color:#1e293b;font-weight:600}
.d-cross{display:inline-block;font-size:10px;padding:1px 6px;border-radius:4px;background:rgba(251,146,60,.15);color:#f97316;border:1px dashed rgba(251,146,60,.4);margin-left:6px}
/* 产业9维Tab样式 */
.tab-bar{display:flex;flex-wrap:wrap;gap:3px;margin-bottom:10px;border-bottom:1px solid rgba(100,130,255,.1);padding-bottom:6px}
.tab-btn{padding:4px 8px;font-size:10px;border:1px solid rgba(100,130,255,.15);border-radius:4px 4px 0 0;background:rgba(248,250,252,.8);color:#64748b;cursor:pointer;transition:.15s;white-space:nowrap}
.tab-btn:hover{background:rgba(240,245,255,.8);color:#1e293b}
.tab-btn.active{background:rgba(59,130,246,.1);color:#2563eb;border-color:rgba(59,130,246,.3);font-weight:600}
.tab-content{font-size:12px;color:#334155;line-height:1.7;padding:8px;background:rgba(248,250,252,.8);border-radius:6px;border:1px solid rgba(100,130,255,.08);margin-bottom:10px;min-height:60px}
.tab-source{font-size:10px;color:#94a3b8;margin-top:6px;font-style:italic}
/* 企业详情增强样式 */
.company-section{margin-bottom:12px}
.company-section-title{font-size:11px;color:#64748b;text-transform:uppercase;letter-spacing:1px;margin-bottom:6px;padding-bottom:4px;border-bottom:1px solid rgba(100,130,255,.1)}
.company-info-row{display:flex;justify-content:space-between;padding:3px 0;font-size:11px;color:#334155}
.company-info-row .label{color:#64748b}
.company-info-row .value{color:#1e293b;font-weight:500}
.relation-item{padding:5px 8px;margin-bottom:4px;background:rgba(248,250,252,.8);border-radius:5px;border:1px solid rgba(100,130,255,.06);font-size:11px;line-height:1.5}
.relation-item .rel-name{font-weight:600;color:#1e293b}
.relation-item .rel-detail{color:#64748b;margin-top:2px}
/* 顶部面包屑 */
.top-breadcrumb{display:flex;align-items:center;gap:4px;font-size:12px;color:#64748b;flex:1;margin-left:18px;flex-wrap:wrap}
.top-breadcrumb .bc-item{padding:3px 8px;border-radius:4px;background:rgba(241,245,249,.85);color:#475569;cursor:pointer;transition:.15s;border:1px solid rgba(100,130,255,.08)}
.top-breadcrumb .bc-item:hover{background:rgba(219,234,254,.9);color:#1e40af}
.top-breadcrumb .bc-item.active{background:linear-gradient(135deg,#3b82f6,#6366f1);color:#fff;font-weight:600;border-color:transparent}
.top-breadcrumb .bc-sep{color:#cbd5e1;font-size:10px}
/* 占位卡片 */
.placeholder-card{padding:8px 10px;margin-bottom:4px;background:repeating-linear-gradient(135deg,rgba(248,250,252,.85),rgba(248,250,252,.85) 6px,rgba(241,245,249,.6) 6px,rgba(241,245,249,.6) 12px);border-radius:5px;border:1px dashed rgba(148,163,184,.45);font-size:11px;line-height:1.5}
.placeholder-card .ph-title{font-weight:600;color:#64748b;margin-bottom:2px}
.placeholder-card .ph-body{color:#94a3b8;font-style:italic}
.placeholder-card .ph-source{font-size:10px;color:#cbd5e1;margin-top:3px}
/* 跨行业说明卡片 */
.cross-industry-card{margin:8px 0 12px;padding:10px 12px;background:linear-gradient(135deg,rgba(251,146,60,.08),rgba(249,115,22,.04));border:1px dashed rgba(249,115,22,.45);border-radius:6px}
.cross-industry-card .cic-title{font-size:11px;font-weight:700;color:#ea580c;margin-bottom:4px;text-transform:none;letter-spacing:.5px}
.cross-industry-card .cic-body{font-size:12px;color:#7c2d12;line-height:1.5}
/* 分析总结正文 */
.analysis-text{font-size:12px;color:#334155;line-height:1.7;padding:8px;background:rgba(248,250,252,.8);border-radius:5px;border:1px solid rgba(100,130,255,.06)}
/* 时间轴样式 */
.timeline-container{padding:12px;max-height:400px;overflow-y:auto}
.timeline-container::-webkit-scrollbar{width:3px}
.timeline-container::-webkit-scrollbar-thumb{background:rgba(100,130,255,.25);border-radius:2px}
.timeline-item{position:relative;padding-left:24px;padding-bottom:16px;border-left:2px solid #e2e8f0;margin-left:8px}
.timeline-item:last-child{border-left:2px solid transparent}
.timeline-dot{position:absolute;left:-7px;top:2px;width:12px;height:12px;border-radius:50%;background:#3b82f6;border:2px solid #fff;box-shadow:0 0 0 2px #3b82f6}
.timeline-dot.green{background:#10b981;box-shadow:0 0 0 2px #10b981}
.timeline-dot.purple{background:#8b5cf6;box-shadow:0 0 0 2px #8b5cf6}
.timeline-dot.orange{background:#f97316;box-shadow:0 0 0 2px #f97316}
.timeline-year{font-size:13px;font-weight:700;color:#3b82f6;margin-bottom:2px}
.timeline-event{font-size:13px;color:#334155;line-height:1.5}
.timeline-meta{font-size:11px;color:#94a3b8;margin-top:2px}
.timeline-type{display:inline-block;padding:1px 6px;border-radius:3px;font-size:10px;margin-right:4px}
.timeline-type.blue{background:#eff6ff;color:#3b82f6}
.timeline-type.green{background:#ecfdf5;color:#10b981}
.timeline-type.purple{background:#f5f3ff;color:#8b5cf6}
.timeline-type.orange{background:#fff7ed;color:#f97316}
.timeline-sub-tab-bar{display:flex;gap:3px;margin-bottom:8px}
.timeline-sub-tab{padding:3px 8px;font-size:10px;border:1px solid rgba(100,130,255,.15);border-radius:4px;background:rgba(248,250,252,.8);color:#64748b;cursor:pointer;transition:.15s}
.timeline-sub-tab:hover{background:rgba(240,245,255,.8);color:#1e293b}
.timeline-sub-tab.active{background:rgba(59,130,246,.1);color:#2563eb;border-color:rgba(59,130,246,.3);font-weight:600}
