@import"https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=Outfit:wght@400;500;600;700;800&display=swap";:root{--font-body: "Inter", sans-serif;--font-head: "Outfit", sans-serif;--bg-primary: #0f172a;--bg-sidebar: #020617;--bg-card: rgba(30, 41, 59, .45);--border-color: rgba(255, 255, 255, .08);--border-focus: rgba(37, 99, 235, .5);--text-main: #f8fafc;--text-muted: #94a3b8;--text-highlight: #ffffff;--color-primary: #2563eb;--color-primary-hover: #1d4ed8;--color-success: #10b981;--color-success-hover: #059669;--color-error: #ef4444;--color-error-hover: #dc2626;--color-accent: #6366f1;--bg-hover: rgba(255, 255, 255, .04);--bg-input: rgba(15, 23, 42, .6);--bg-table-header: rgba(2, 6, 23, .7);--bg-table-container: rgba(15, 23, 42, .4);--bg-toolbar: rgba(2, 6, 23, .4)}.theme-light{--bg-primary: #f8fafc;--bg-sidebar: #ffffff;--bg-card: rgba(255, 255, 255, .85);--border-color: rgba(15, 23, 42, .12);--border-focus: rgba(37, 99, 235, .4);--text-main: #334155;--text-muted: #64748b;--text-highlight: #0f172a;--bg-hover: rgba(15, 23, 42, .05);--bg-input: #ffffff;--bg-table-header: rgba(241, 245, 249, .95);--bg-table-container: rgba(255, 255, 255, .6);--bg-toolbar: rgba(241, 245, 249, .6)}*{box-sizing:border-box;margin:0;padding:0}body{background-color:var(--bg-primary);color:var(--text-main);font-family:var(--font-body);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow:hidden;height:100vh;width:100vw;transition:background-color .3s,color .3s}.app-container{display:grid;grid-template-columns:280px 1fr;height:100vh;width:100vw}.main-content{padding:30px;overflow-y:auto;background:radial-gradient(circle at top right,rgba(99,102,241,.08),transparent 45%),radial-gradient(circle at bottom left,rgba(37,99,235,.05),transparent 40%);transition:background .3s}.theme-light .main-content{background:radial-gradient(circle at top right,rgba(99,102,241,.04),transparent 45%),radial-gradient(circle at bottom left,rgba(37,99,235,.02),transparent 40%),#f1f5f9}.sidebar{background-color:var(--bg-sidebar);border-right:1px solid var(--border-color);padding:24px 16px;display:flex;flex-direction:column;height:100%;transition:background-color .3s,border-color .3s}.sidebar-logo{display:flex;align-items:center;gap:12px;margin-bottom:32px;padding:0 8px}.logo-icon{color:var(--color-accent);fill:#6366f133}.sidebar-logo h2{font-family:var(--font-head);font-weight:700;font-size:20px;color:var(--text-highlight)}.sidebar-logo h2 span{font-size:11px;font-weight:500;background-color:var(--border-color);padding:2px 6px;border-radius:4px;margin-left:4px;color:var(--text-muted)}.sidebar-nav{display:flex;flex-direction:column;gap:6px;flex:1}.nav-item{display:flex;align-items:center;gap:12px;background:transparent;border:none;color:var(--text-muted);font-family:var(--font-body);font-size:14px;font-weight:500;padding:12px 14px;border-radius:8px;cursor:pointer;text-align:left;transition:all .2s ease;position:relative;width:100%}.nav-item:hover:not(.disabled){color:var(--text-main);background-color:var(--bg-hover)}.nav-item.active{color:var(--text-highlight);background-color:#2563eb26;box-shadow:inset 0 0 1px #2563eb80}.theme-light .nav-item.active{background-color:#2563eb14}.nav-item.active:before{content:"";position:absolute;left:0;top:15%;height:70%;width:4px;background-color:var(--color-primary);border-radius:0 4px 4px 0}.nav-item.disabled{opacity:.45;cursor:not-allowed}.nav-icon{width:18px;height:18px;flex-shrink:0}.lock-badge{font-size:9px;font-weight:600;text-transform:uppercase;background-color:#ffffff14;padding:2px 5px;border-radius:3px;margin-left:auto}.theme-light .lock-badge{background-color:#0f172a14}.sidebar-footer{padding-top:16px;border-top:1px solid var(--border-color);font-size:11px;color:var(--text-muted);text-align:center}.theme-toggle-btn{display:flex;align-items:center;justify-content:center;gap:8px;background-color:var(--bg-hover);color:var(--text-main);border:1px solid var(--border-color);border-radius:6px;padding:8px 12px;font-family:var(--font-body);font-size:12px;font-weight:600;cursor:pointer;width:100%;transition:all .2s}.theme-toggle-btn:hover{background-color:#ffffff14;border-color:#ffffff26}.theme-light .theme-toggle-btn:hover{background-color:#0f172a14;border-color:#0f172a26}.card{background:var(--bg-card);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid var(--border-color);border-radius:12px;padding:24px;margin-bottom:24px;box-shadow:0 4px 30px #00000026;transition:transform .2s,box-shadow .2s,background .3s,border-color .3s}.glass{background:var(--bg-card);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border:1px solid var(--border-color)}.flex-col{display:flex;flex-direction:column}.page-header{margin-bottom:30px}.page-header h1{font-family:var(--font-head);font-size:28px;font-weight:700;color:var(--text-highlight);margin-bottom:8px;letter-spacing:-.02em}.page-subtitle{font-size:15px;color:var(--text-muted);max-width:800px;line-height:1.5}h3{font-family:var(--font-head);font-size:18px;font-weight:600;color:var(--text-highlight);margin-bottom:12px}h4{font-family:var(--font-head);font-size:15px;font-weight:600;color:var(--text-highlight)}.card-note{font-size:13px;color:var(--text-muted);line-height:1.5;margin-bottom:20px}.grid-2col{display:grid;grid-template-columns:1.3fr 1fr;gap:24px}.form-card{display:flex;flex-direction:column;gap:16px}.checkbox-label{display:inline-flex;align-items:center;gap:10px;cursor:pointer;margin-bottom:12px}.checkbox-label input[type=checkbox]{width:16px;height:16px;accent-color:var(--color-primary)}.checkbox-text{font-size:14px;color:var(--text-main);-webkit-user-select:none;user-select:none}.override-inputs-group{background:var(--bg-table-container);border:1px dashed var(--border-color);border-radius:8px;padding:16px;display:flex;flex-direction:column;gap:16px;margin-bottom:8px}.input-group{display:flex;flex-direction:column;gap:6px}.input-group label{font-size:13px;font-weight:600;color:var(--text-muted)}.file-input-wrapper{display:flex;align-items:center;gap:10px;background-color:var(--bg-input);border:1px solid var(--border-color);border-radius:6px;padding:10px 14px;cursor:pointer;position:relative;overflow:hidden;transition:border-color .2s}.file-input-wrapper:hover{border-color:#fff3}.theme-light .file-input-wrapper:hover{border-color:#0f172a40}.file-input-wrapper input[type=file]{position:absolute;left:0;top:0;opacity:0;width:100%;height:100%;cursor:pointer}.primary-upload{background-color:#2563eb14;border-color:#2563eb4d}.primary-upload:hover{border-color:var(--color-primary)}.field-note{font-size:11px;color:var(--text-muted)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;font-family:var(--font-body);font-size:14px;font-weight:600;padding:10px 18px;border-radius:6px;border:none;cursor:pointer;transition:all .2s ease}.btn-primary{background-color:var(--color-primary);color:#fff}.btn-primary:hover:not(:disabled){background-color:var(--color-primary-hover)}.btn-secondary{background-color:var(--bg-hover);color:var(--text-main);border:1px solid var(--border-color)}.btn-secondary:hover:not(:disabled){background-color:#ffffff1a;border-color:#fff3}.theme-light .btn-secondary:hover:not(:disabled){background-color:#0f172a0f;border-color:#0f172a2e}.btn-success{background-color:var(--color-success);color:#fff}.btn-success:hover:not(:disabled){background-color:var(--color-success-hover)}.btn-sm{padding:6px 12px;font-size:12px;border-radius:4px}.btn-icon-only{padding:8px;border-radius:6px}.btn:disabled{opacity:.45;cursor:not-allowed}.form-actions{display:flex;gap:12px;margin-top:10px}.worker-progress-status{display:inline-flex;align-items:center;gap:12px;background:var(--bg-card);border:1px solid rgba(37,99,235,.2);padding:10px 16px;border-radius:99px;font-size:13px;margin-top:8px}.pulse-circle{width:10px;height:10px;background-color:var(--color-primary);border-radius:50%;animation:pulseGlow 1.5s infinite ease-in-out}.spinner{animation:spin 1s linear infinite}@keyframes pulseGlow{0%{transform:scale(.9);box-shadow:0 0 #2563eb99}70%{transform:scale(1.1);box-shadow:0 0 0 8px #2563eb00}to{transform:scale(.9);box-shadow:0 0 #2563eb00}}@keyframes spin{to{transform:rotate(360deg)}}.table-overflow{overflow-x:auto;overflow-y:auto;max-height:calc(100vh - 300px);border-radius:6px;border:1px solid var(--border-color);background:var(--bg-table-container);transition:background .3s}.modern-table{width:100%;border-collapse:collapse;text-align:left;font-size:13px}.modern-table th{background-color:var(--bg-table-header);color:var(--text-muted);font-weight:600;padding:12px 16px;border-bottom:1px solid var(--border-color);position:sticky;top:0;z-index:5;transition:background-color .3s,color .3s}.modern-table td{padding:12px 16px;border-bottom:1px solid var(--border-color);color:var(--text-main)}.modern-table tr:hover td{background-color:#ffffff05}.theme-light .modern-table tr:hover td{background-color:#0f172a05}.text-highlight{color:var(--text-highlight);font-weight:500}.text-success{color:var(--color-success)!important}.text-error{color:var(--color-error)!important}.badge{font-size:11px;font-weight:600;padding:3px 6px;border-radius:4px}.badge-fdr{background-color:#6366f126;color:var(--text-main);border:1px solid rgba(99,102,241,.3)}.theme-light .badge-fdr{background-color:#6366f114}.badge-net-dual{background-color:#a855f72e;color:#c084fc;border:1px solid rgba(168,85,247,.3)}.theme-light .badge-net-dual{background-color:#a855f714;color:#7c3aed}.badge-net-activator{background-color:#10b9812e;color:#34d399;border:1px solid rgba(16,185,129,.3)}.theme-light .badge-net-activator{background-color:#10b98114;color:#059669}.badge-net-repressor{background-color:#ef44442e;color:#f87171;border:1px solid rgba(239,68,68,.3)}.theme-light .badge-net-repressor{background-color:#ef444414;color:#dc2626}.badge-net-none{background-color:#ffffff0d;color:var(--text-muted);border:1px solid rgba(255,255,255,.1)}.theme-light .badge-net-none{background-color:#0f172a0a;color:var(--text-muted);border:1px solid rgba(15,23,42,.08)}.info-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.quick-stats-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin:16px 0}.q-stat{background-color:var(--bg-table-container);border:1px solid var(--border-color);padding:16px;border-radius:8px;text-align:center}.q-val{display:block;font-family:var(--font-head);font-size:24px;font-weight:700;color:var(--text-highlight)}.q-lbl{font-size:11px;color:var(--text-muted)}.diagnostics-box{margin-top:auto;border-top:1px solid var(--border-color);padding-top:16px}.diagnostics-box h4{margin-bottom:6px}.diagnostics-box p{font-size:12px;color:var(--text-muted);line-height:1.5;margin-bottom:12px}.message-banner{border-radius:6px;padding:12px 16px;font-size:13px;line-height:1.4;margin-top:8px}.message-banner.success{background-color:#10b9811a;border:1px solid rgba(16,185,129,.2);color:var(--color-success)}.message-banner.error{background-color:#ef44441a;border:1px solid rgba(239,68,68,.2);color:var(--color-error)}.tab-navigation.subtabs{display:flex;gap:8px;border-bottom:1px solid var(--border-color);padding-bottom:10px}.tab-navigation.subtabs .tab-btn{display:inline-flex;align-items:center;gap:8px;background:transparent;border:none;color:var(--text-muted);font-family:var(--font-body);font-size:13px;font-weight:600;padding:8px 14px;border-radius:6px;cursor:pointer;transition:all .2s}.tab-navigation.subtabs .tab-btn:hover{color:var(--text-main);background-color:var(--bg-hover)}.tab-navigation.subtabs .tab-btn.active{color:var(--text-highlight);background-color:var(--bg-hover)}.table-title{margin-bottom:12px;font-size:14px;color:var(--text-muted)}.gsea-layout{display:block;width:100%}.gsea-meta-card{display:flex;flex-direction:column}.meta-stats-list{display:flex;flex-direction:column;gap:16px}.meta-stat-item{display:flex;flex-direction:column;gap:4px}.m-lbl{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted)}.m-val{font-family:var(--font-head);font-size:18px;font-weight:600;color:var(--text-highlight)}.plots-dashboard-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px}.plot-card{padding:16px;display:flex;flex-direction:column;height:520px}.plot-header{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--border-color);padding-bottom:10px;margin-bottom:12px}.tooltip-trigger{color:var(--text-muted);cursor:pointer;display:flex}.tooltip-trigger:hover{color:var(--text-highlight)}.plotly-container{width:100%;flex:1;min-height:0}.full-width-plot{grid-column:1 / -1;height:580px}.network-card{padding:24px;display:flex;flex-direction:column}.network-header{display:flex;justify-content:space-between;align-items:flex-start;gap:24px}.header-actions{display:flex;align-items:center;gap:12px}.timer-badge{display:inline-flex;align-items:center;gap:8px;background-color:var(--bg-input);border:1px solid var(--border-color);padding:6px 12px;border-radius:99px;font-size:11px;color:var(--text-muted)}.timer-badge.active{border-color:#2563eb66;color:var(--text-highlight)}.timer-dot{width:6px;height:6px;background-color:var(--text-muted);border-radius:50%}.timer-badge.active .timer-dot{background-color:var(--color-primary);animation:pulseGlow 1.2s infinite}.canvas-toolbar-panel{display:flex;flex-wrap:wrap;gap:16px;align-items:center;background-color:var(--bg-toolbar);border-radius:8px;padding:10px 16px;border:1px solid var(--border-color);transition:background-color .3s}.toolbar-search-form{display:flex;align-items:center;background-color:var(--bg-input);border:1px solid var(--border-color);border-radius:6px;padding-left:10px;overflow:hidden;transition:background-color .3s}.toolbar-search-form input{background:transparent;border:none;outline:none;color:var(--text-main);font-family:var(--font-body);font-size:13px;width:180px;padding:6px 4px}.toolbar-sliders{display:flex;gap:24px;margin-left:auto;flex-wrap:wrap}.slider-control{display:flex;align-items:center;gap:10px}.slider-lbl{font-size:12px;color:var(--text-muted);font-weight:500}.slider-control input[type=range]{width:160px;accent-color:var(--color-primary)}.slider-val{font-family:var(--font-body);font-size:12px;font-weight:700;color:var(--text-highlight);min-width:42px}.canvas-wrap{position:relative;width:100%;border-radius:8px;overflow:hidden;border:1px solid rgba(0,0,0,.6);background-color:#000;display:flex;justify-content:center}.theme-light .canvas-wrap{border-color:var(--border-color);background-color:#f8fafc}.interactive-canvas{display:block;width:100%;height:clamp(520px,66vh,760px);min-height:520px}.canvas-placeholder{position:absolute;top:0;left:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;background-color:#020617e6;color:var(--text-muted);font-size:14px}.theme-light .canvas-placeholder{background-color:#ffffffe6}.network-stats-text{font-size:13px;color:var(--text-muted);line-height:1.4}.legend{display:flex;flex-wrap:wrap;gap:12px 20px;font-size:12px}.legend-item{display:inline-flex;align-items:center;gap:8px;color:var(--text-muted)}.swatch{width:12px;height:12px;border-radius:50%;border:1px solid rgba(255,255,255,.15);display:inline-block}.theme-light .swatch{border-color:#0f172a26}.tests-actions-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.tests-summary-box{background-color:var(--bg-table-container);border-radius:8px;padding:16px;border:1px solid var(--border-color);display:flex;align-items:center;gap:20px;transition:background-color .3s}.stats-total{font-family:var(--font-head);font-weight:700;font-size:18px;white-space:nowrap}.progress-bar-track{width:100%;height:8px;background-color:#ffffff0f;border-radius:9px;overflow:hidden}.theme-light .progress-bar-track{background-color:#0f172a0f}.progress-bar-fill{height:100%;background:linear-gradient(90deg,var(--color-primary),var(--color-success));border-radius:9px}.tests-log-list{display:flex;flex-direction:column;gap:8px;max-height:480px;overflow-y:auto}.test-log-item{display:flex;align-items:center;gap:12px;background-color:#0f172a40;border:1px solid var(--border-color);padding:12px 16px;border-radius:6px}.theme-light .test-log-item{background-color:#fff6}.test-log-details{display:flex;flex-direction:column;gap:2px;flex:1}.test-name{font-size:13px;font-weight:500;color:var(--text-main)}.test-error-msg{font-size:11px;color:var(--color-error)}.test-status-badge{font-size:10px;font-weight:700;padding:2px 6px;border-radius:3px}.test-status-badge.passed{background-color:#10b98126;color:var(--color-success)}.test-status-badge.failed{background-color:#ef444426;color:var(--color-error)}select.organism-dropdown{background-color:var(--bg-input);border:1px solid var(--border-color);color:var(--text-main);border-radius:6px;padding:10px 14px;font-family:var(--font-body);font-size:14px;width:100%;outline:none;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgba(255,255,255,0.7)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><polyline points='6 9 12 15 18 9'></polyline></svg>");background-repeat:no-repeat;background-position:right 12px center;background-size:16px;transition:border-color .2s,background-color .3s}select.organism-dropdown:hover:not(:disabled){border-color:#ffffff40}.theme-light select.organism-dropdown:hover:not(:disabled){border-color:#0f172a40}.theme-light select.organism-dropdown{background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgba(15,23,42,0.7)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><polyline points='6 9 12 15 18 9'></polyline></svg>")}.mt-2{margin-top:8px}.mt-3{margin-top:12px}.mt-4{margin-top:16px}.mb-4{margin-bottom:16px}.mr-2{margin-right:8px}.py-10{padding-top:40px;padding-bottom:40px}.text-center{text-align:center}.mx-auto{margin-left:auto;margin-right:auto}.opacity-50{opacity:.5}.relative{position:relative}.divider-drag-bar-container{transition:background-color .2s}.divider-drag-bar-container:hover{background:#ffffff0a!important}.theme-light .divider-drag-bar-container:hover{background:#00000008!important}.divider-drag-bar-container:hover .divider-drag-bar,.divider-drag-bar-container:active .divider-drag-bar{background:var(--accent-color, #6366f1)!important;height:60px!important;width:6px!important}
