.node-detail-panel{position:absolute;top:20px;right:20px;width:320px;max-height:calc(100vh - 140px);background:#fffffff2;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:12px;border:1px solid rgba(255,255,255,.2);box-shadow:0 8px 32px #0000001a;z-index:1000;overflow:hidden;transition:all .3s ease}.panel-header{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;padding:16px 20px;border-radius:12px 12px 0 0}.panel-header h3{margin:0;font-size:16px;font-weight:600;letter-spacing:.5px}.panel-content{padding:20px;max-height:calc(100vh - 200px);overflow-y:auto;scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.2) transparent}.panel-content::-webkit-scrollbar{width:6px}.panel-content::-webkit-scrollbar-track{background:transparent}.panel-content::-webkit-scrollbar-thumb{background:#0003;border-radius:3px}.no-selection{text-align:center;color:#999;font-style:italic;margin:20px 0}.node-title{display:flex;align-items:center;gap:12px;margin-bottom:20px;padding-bottom:15px;border-bottom:1px solid #eee}.category-indicator{width:12px;height:12px;border-radius:50%;flex-shrink:0}.node-title h4{margin:0;font-size:16px;font-weight:600;color:#333;line-height:1.4;flex:1}.detail-section{margin-bottom:16px}.detail-section:last-child{margin-bottom:0}.detail-section label{display:inline-block;font-size:12px;font-weight:600;color:#666;text-transform:uppercase;letter-spacing:.5px;margin-right:8px;margin-bottom:0}.detail-section span{font-size:14px;color:#333;line-height:1.5;margin:0;display:inline}.detail-section p{font-size:14px;color:#333;line-height:1.5;margin:0}.event-id{font-family:Monaco,Menlo,monospace;background:#f0f8ff;padding:4px 8px;border-radius:4px;font-size:12px;color:#1976d2}.event-date{font-weight:500}.event-category{font-weight:600;text-transform:capitalize}.event-title{font-weight:500}.detail-section.description{margin-top:20px;padding-top:15px;border-top:1px solid #eee}.event-description{background:#f8f9fa;padding:12px;border-radius:8px;border-left:3px solid #667eea;font-size:13px;line-height:1.6}.event-url{color:#667eea;text-decoration:none;font-weight:500;transition:color .2s ease}.event-url:hover{color:#764ba2;text-decoration:underline}.participants{display:flex;flex-wrap:wrap;gap:6px}.participant{background:#e3f2fd;color:#1976d2;padding:4px 8px;border-radius:12px;font-size:12px;font-weight:500}.participant-count{background:#f5f5f5;color:#666;padding:4px 8px;border-radius:12px;font-size:12px;font-style:italic}@media (max-width: 768px){.node-detail-panel{position:fixed;inset:auto 20px 20px;width:auto;max-height:40vh}.panel-content{max-height:calc(40vh - 80px)}.node-title h4{font-size:14px}.detail-section span,.detail-section p{font-size:13px}}.node-detail-panel.has-content{transform:translateY(0);opacity:1}.node-detail-panel.no-content{transform:translateY(-10px);opacity:.7}.timeline-id,.network-id{font-family:Monaco,Menlo,monospace;background:#f0f8ff;padding:4px 8px;border-radius:4px;font-size:12px;color:#1976d2}.last-viewed{font-size:12px;color:#999;font-style:italic;margin-left:8px}.ids-section{margin-top:20px;padding-top:15px;border-top:1px solid #eee}.ids-section .detail-section{margin-bottom:12px}.ids-section .detail-section:last-child{margin-bottom:0}.network-stats{position:absolute;top:10px;left:10px;background:#fffffff2;border:1px solid #ddd;border-radius:8px;padding:16px;box-shadow:0 2px 8px #0000001a;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:100;min-width:220px;font-size:15px}.stats-section{margin-bottom:12px}.stats-section:last-child{margin-bottom:0}.overview-title{margin:0 0 12px;font-size:18px;font-weight:700;color:#333;border-bottom:2px solid #333;padding-bottom:6px;text-align:center}.stats-grid{display:grid;grid-template-columns:1fr;gap:4px}.stat-item{display:flex;justify-content:space-between;align-items:center;padding:6px 0;border-bottom:1px solid #f0f0f0}.stat-item:last-child{border-bottom:none}.stat-label{font-size:14px;font-weight:500;color:#333}.stat-value{font-weight:700;font-family:monospace;font-size:14px;padding:4px 8px;border-radius:6px;border:2px solid;color:#333}.visible-value{background:#e8f8f0;border-color:#27ae60}.connections-value{background:#ebf3fd;border-color:#3498db}.range-value{background:#fdf6e3;border-color:#f39c12}.hidden-value{background:#fdeaea;border-color:#e74c3c}@media (max-width: 768px){.network-stats{position:relative;top:0;right:0;margin-bottom:10px;width:100%}.stats-grid{grid-template-columns:1fr 1fr}}.network-visualization{position:relative;width:100%;height:100%;overflow:hidden;background:linear-gradient(135deg,#f5f7fa,#c3cfe2);border-radius:8px}.network-svg{width:100%;height:100%;display:block}.network-visualization.loading,.network-visualization.empty{display:flex;align-items:center;justify-content:center;min-height:400px}.loading-message,.empty-message{text-align:center;color:#666}.loading-message h3,.empty-message h3{margin:0 0 8px;font-size:18px;font-weight:600}.loading-message p,.empty-message p{margin:0;font-size:14px;opacity:.8}.loading-spinner{width:32px;height:32px;border:3px solid #f3f3f3;border-top:3px solid #667eea;border-radius:50%;animation:spin 1s linear infinite;margin:0 auto 16px}.network-svg .node{stroke:#fff;stroke-width:2px;transition:opacity .3s ease,r .2s ease,stroke-width .2s ease}.network-svg .node.node-hover{stroke-width:3px!important}.network-svg .node.node-highlighted{opacity:1!important;stroke-width:3px;filter:drop-shadow(0 0 8px rgba(0,0,0,.3))}.network-svg .node.node-dimmed{opacity:.2!important;transition:opacity .3s ease}.network-svg .link{transition:opacity .3s ease,stroke-width .2s ease}.network-svg .link.link-highlighted{stroke-width:3px!important;stroke:#333!important;opacity:1!important;filter:drop-shadow(0 0 4px rgba(0,0,0,.2))}.network-svg .link.link-dimmed{opacity:.1!important;transition:opacity .3s ease}.network-svg .timeline-grid line{pointer-events:none}.network-svg .timeline-grid text{pointer-events:none;-webkit-user-select:none;user-select:none}@media (max-width: 768px){.network-visualization{border-radius:0}.network-svg .node{r:6}.network-svg .link{stroke-width:1.5}}.category-legend{padding:1.5rem}.category-legend h3{margin:0 0 1rem;font-size:1.1rem;color:#333;font-weight:600}.legend-items{display:flex;flex-direction:column;gap:.75rem}.legend-item{display:flex;align-items:center;gap:.75rem;padding:.5rem;border-radius:4px;justify-content:space-between;cursor:pointer;transition:all .2s ease}.legend-item:hover{background-color:#f8f9fa}.legend-item.hidden{opacity:.4;background-color:#f5f5f5}.legend-item.hidden .legend-color{opacity:.6}.legend-item.hidden .legend-label{color:#999}.legend-color{width:16px;height:16px;border-radius:50%;flex-shrink:0;border:2px solid white;box-shadow:0 0 0 1px #0000001a}.legend-content{display:flex;align-items:center;gap:.75rem;flex:1}.legend-label{font-size:.9rem;color:#555;line-height:1.2}.legend-count{font-size:.8rem;color:#777;font-weight:500;min-width:2rem;text-align:right}.timeline-slider{display:flex;flex-direction:column;gap:.5rem;height:100%;width:100%;overflow:hidden;justify-content:flex-start;padding:.25rem 0}.slider-header{display:flex;justify-content:space-between;align-items:center;gap:1rem;min-height:35px;flex-shrink:0;position:relative}.header-left{display:flex;align-items:center;gap:1rem;flex:1}.slider-title{font-weight:600;color:#333;font-size:.8rem}.date-range{font-size:.8rem;color:#666;background:#f8f9fa;padding:.2rem .4rem;border-radius:3px}.slider-container{position:relative;height:50px;cursor:default}.slider-track{position:absolute;top:1rem;left:0;right:0;height:6px;background:#e9ecef;border-radius:3px}.slider-range{position:absolute;height:100%;background:linear-gradient(90deg,#667eea,#764ba2);border-radius:3px;top:0}.slider-handle{position:absolute;top:-6px;width:18px;height:18px;background:#667eea;border:2px solid white;border-radius:50%;cursor:pointer;box-shadow:0 2px 4px #0003;transform:translate(-50%);transition:transform .1s ease;-webkit-user-select:none;user-select:none}.slider-handle:hover{transform:translate(-50%) scale(1.1)}.slider-handle:active{transform:translate(-50%) scale(.95)}.start-handle{z-index:2}.end-handle{z-index:3;background:#764ba2}.apply-button{background:#667eea;color:#fff;border:none;padding:.4rem .8rem;border-radius:4px;cursor:pointer;font-size:.8rem;font-weight:600;transition:background-color .2s ease}.apply-button:hover{background:#5a67d8}.monthly-selectors{display:flex;gap:.75rem;align-items:center}.selector-group{display:flex;align-items:center;gap:.5rem}.selector-group label{font-size:.75rem;font-weight:600;color:#555;white-space:nowrap}.selector-group select{padding:.3rem .5rem;border:1px solid #ddd;border-radius:3px;background:#fff;font-size:.75rem;cursor:pointer;min-width:80px}.selector-group select:focus{outline:none;border-color:#667eea;box-shadow:0 0 0 2px #667eea33}.visual-range{margin-top:.25rem}.range-bar{position:relative;height:6px;background:#e9ecef;border-radius:3px;margin-bottom:.5rem}.selected-range{position:absolute;height:100%;background:linear-gradient(90deg,#667eea,#764ba2);border-radius:3px;top:0;transition:all .3s ease;min-width:8px}.range-labels{display:flex;justify-content:space-between;font-size:.8rem;color:#888}.readme-modal-overlay{position:fixed;inset:0;background-color:#000000b3;display:flex;justify-content:center;align-items:center;z-index:1000;padding:20px;animation:fadeIn .3s ease-out}.readme-modal{background:#fff;border-radius:12px;box-shadow:0 20px 60px #0000004d;max-width:800px;max-height:90vh;width:100%;display:flex;flex-direction:column;animation:slideIn .3s ease-out}.readme-modal-header{display:flex;justify-content:space-between;align-items:center;padding:24px 24px 16px;border-bottom:1px solid #e5e5e5;margin-bottom:0}.readme-modal-header h1{margin:0;font-size:1.8rem;color:#2c3e50;font-weight:600}.readme-modal-close{background:none;border:none;font-size:2rem;color:#7f8c8d;cursor:pointer;padding:0;width:40px;height:40px;display:flex;align-items:center;justify-content:center;border-radius:50%;transition:all .2s ease}.readme-modal-close:hover{background-color:#f8f9fa;color:#2c3e50}.readme-modal-content{flex:1;overflow-y:auto;padding:24px;line-height:1.6}.readme-section{margin-bottom:24px}.readme-section:last-child{margin-bottom:0}.readme-section h2{color:#2c3e50;font-size:1.3rem;margin-bottom:12px;font-weight:600;border-bottom:2px solid #3498db;padding-bottom:4px}.readme-section p{margin-bottom:12px;color:#34495e;font-size:.95rem}.readme-section ul,.readme-section ol{margin-bottom:12px;padding-left:20px}.readme-section li{margin-bottom:8px;color:#34495e;font-size:.95rem}.readme-section strong{color:#2c3e50;font-weight:600}.dataset-citation{background-color:#f8f9fa;padding:16px;border-radius:8px;border-left:4px solid #3498db;margin-top:12px;font-size:.9rem;line-height:1.5}.dataset-citation a{color:#3498db;text-decoration:none;font-weight:500}.dataset-citation a:hover{text-decoration:underline}.warning-section{background-color:#f8f9fa;border:1px solid #e9ecef;border-radius:8px;padding:16px;margin-top:12px}.warning-item{margin-bottom:12px;padding:8px 0;border-bottom:1px solid #eee;font-size:.95rem;line-height:1.5}.warning-item:last-child{margin-bottom:0;border-bottom:none}.warning-item strong{color:#d68910;font-weight:600}.warning-item a{color:#3498db;text-decoration:none;font-weight:500}.warning-item a:hover{text-decoration:underline}.license a{color:#3498db;text-decoration:none;font-weight:500}.license a:hover{text-decoration:underline}.readme-modal-footer{padding:16px 24px 24px;border-top:1px solid #e5e5e5;display:flex;justify-content:center}.readme-modal-button{padding:12px 32px;border:none;border-radius:6px;font-size:1rem;font-weight:600;cursor:pointer;transition:all .2s ease}.readme-modal-button.primary{background-color:#3498db;color:#fff}.readme-modal-button.primary:hover{background-color:#2980b9;transform:translateY(-1px);box-shadow:0 4px 12px #3498db4d}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideIn{0%{opacity:0;transform:translateY(-30px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}@media (max-width: 768px){.readme-modal{margin:10px;max-height:95vh}.readme-modal-header{padding:16px 16px 0}.readme-modal-header h1{font-size:1.5rem}.readme-modal-content{padding:16px}.readme-modal-footer{padding:12px 16px 16px}}.readme-modal-content::-webkit-scrollbar{width:6px}.readme-modal-content::-webkit-scrollbar-track{background:#f1f1f1;border-radius:3px}.readme-modal-content::-webkit-scrollbar-thumb{background:#c1c1c1;border-radius:3px}.readme-modal-content::-webkit-scrollbar-thumb:hover{background:#a8a8a8}.app{display:flex;flex-direction:column;height:100vh;background-color:#f8f9fa}.app-header{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;padding:1rem 2rem;box-shadow:0 2px 4px #0000001a;text-align:left}.header-main{display:flex;justify-content:space-between;align-items:center}.header-content{display:flex;align-items:center;gap:2rem;flex:1}.header-title{text-align:left}.app-header h1{margin:0;font-size:1.8rem;font-weight:600}.app-header p{margin:.5rem 0 0;opacity:.9;font-size:.9rem}.help-button{background:#fff3;border:1px solid rgba(255,255,255,.3);color:#fff;width:40px;height:40px;border-radius:50%;cursor:pointer;font-size:1.2rem;display:flex;align-items:center;justify-content:center;transition:all .2s ease;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.help-button:hover{background:#ffffff4d;transform:scale(1.05);box-shadow:0 4px 12px #00000026}.header-stats{display:flex;gap:1rem;flex-wrap:wrap;font-size:.8rem;font-weight:500}.header-stats span{background:#fff3;padding:.3rem .8rem;border-radius:1rem;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.1)}.app-content{display:flex;flex:1;overflow:hidden}.sidebar{width:250px;background:#fff;border-right:1px solid #e9ecef;overflow-y:auto}.main-content{flex:1;position:relative;background:#fff}.app-footer{height:120px;background:#fff;border-top:1px solid #e9ecef;padding:.5rem;overflow:hidden;display:flex;align-items:stretch}.app-loading,.app-error{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100vh;text-align:center}.loading-spinner{width:40px;height:40px;border:4px solid #f3f3f3;border-top:4px solid #667eea;border-radius:50%;animation:spin 1s linear infinite;margin-bottom:1rem}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.app-error h2{color:#e74c3c;margin-bottom:1rem}.app-error button{background:#667eea;color:#fff;border:none;padding:.5rem 1rem;border-radius:4px;cursor:pointer;margin-top:1rem}.app-error button:hover{background:#5a67d8}*{margin:0;padding:0;box-sizing:border-box}body{font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;background-color:#f5f5f5;overflow:hidden}#root{width:100vw;height:100vh}
