:root{--bg-primary:#f8fafc;--bg-secondary:#fff;--bg-tertiary:#f1f5f9;--bg-hover:#e2e8f0;--text-primary:#1e293b;--text-secondary:#64748b;--text-muted:#94a3b8;--border-color:#e2e8f0;--border-light:#cbd5e1;--accent-primary:#6366f1;--accent-blue:#3b82f6;--accent-cyan:#06b6d4;--accent-teal:#14b8a6;--accent-green:#22c55e;--accent-yellow:#eab308;--accent-orange:#f97316;--accent-red:#ef4444;--accent-pink:#ec4899;--accent-purple:#a855f7;--retention-color:#3b82f6;--egress-color:#ec4899;--driver-color:#f97316;--focal-color:#a855f7;--dlbcl-gcb:#3b82f6;--dlbcl-abc:#ef4444;--burkitt:#a855f7;--mcl:#22c55e;--cll:#eab308;--pel:#14b8a6;--other:#6b7280;--cnv-amp:#ef4444;--cnv-gain:#f97316;--cnv-loss:#3b82f6;--cnv-homdel:#1e3a8a;--shadow-sm:0 1px 2px #0000000d;--shadow-md:0 4px 6px #00000012;--shadow-lg:0 10px 25px #0000001a}*{box-sizing:border-box;margin:0;padding:0}body{background:#f8fafc;background:var(--bg-primary);color:#1e293b;color:var(--text-primary);font-family:Inter,-apple-system,BlinkMacSystemFont,sans-serif;line-height:1.5;min-height:100vh}button{cursor:pointer;transition:all .15s ease}button,input,select{font-family:inherit}::-webkit-scrollbar{height:8px;width:8px}::-webkit-scrollbar-track{background:#f1f5f9;background:var(--bg-tertiary);border-radius:4px}::-webkit-scrollbar-thumb{background:#cbd5e1;background:var(--border-light);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#94a3b8;background:var(--text-muted)}::selection{background:#6366f1;background:var(--accent-primary);color:#fff}.oncoprint-grid-wrapper{min-height:300px;overflow:auto}.oncoprint-svg{display:block}.oncoprint-svg .oncoprint-cell rect{transition:opacity .1s}.oncoprint-svg .oncoprint-cell:hover rect:first-child{stroke:var(--accent-blue);stroke-width:2px}.oncoprint-empty{align-items:center;color:var(--text-secondary);display:flex;font-style:italic;justify-content:center;min-height:200px}.oncoprint-legend{background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:10px;display:flex;flex-wrap:wrap;gap:24px;margin-bottom:16px;padding:14px 18px}.legend-section h4{color:var(--text-muted);font-size:.7rem;font-weight:600;letter-spacing:.5px;margin-bottom:8px;text-transform:uppercase}.legend-items{display:flex;flex-wrap:wrap;gap:12px}.legend-item{align-items:center;display:flex;gap:6px}.legend-color{border-radius:3px;box-shadow:inset 0 0 0 1px #0000001a;flex-shrink:0;height:12px;width:16px}.legend-label{color:var(--text-secondary);font-size:.8rem}.legend-swatch{flex-shrink:0;vertical-align:middle}.legend-drug-info{color:var(--text-secondary);font-size:.7rem;font-style:italic;margin-bottom:6px}.filter-panel .filter-options{display:flex;flex-direction:column;gap:1px}.filter-panel .filter-summary{align-items:center;color:var(--text-secondary);display:flex;font-size:.6rem;justify-content:space-between}.filter-panel .filter-summary,.filter-panel .freezer-filter{border-top:1px solid var(--border-color);margin-top:8px;padding-top:8px}.hidden-cell-lines-indicator{align-items:center;background:#fef3c7;border:1px solid #fbbf24;border-radius:6px;color:#92400e;display:flex;font-size:.7rem;justify-content:space-between;margin-top:6px;padding:6px 8px}.sort-controls .sort-row{align-items:center;display:flex;gap:5px;margin-bottom:6px}.sort-controls .sort-row:last-child{margin-bottom:0}.sort-controls label{color:var(--text-secondary);font-size:.65rem;min-width:45px}.sort-controls select{background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:3px;color:var(--text-primary);flex:1 1;font-size:.65rem;padding:4px 6px}.sort-controls select:focus{border-color:var(--accent-blue);outline:none}.sort-controls .direction-btn{flex:1 1;font-size:.65rem;text-align:center}.panel-checkbox-list{background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:4px;display:flex;flex-direction:column;gap:2px;margin-bottom:8px;max-height:140px;overflow-y:auto;padding:4px}.panel-option{align-items:center;border-radius:3px;cursor:pointer;display:flex;font-size:.68rem;gap:5px;padding:4px 6px;transition:background .15s}.panel-option:hover{background:#ffffff0d}.panel-option.active{background:#3b82f61a}.panel-option input{accent-color:var(--accent-blue);flex-shrink:0;height:11px;width:11px}.panel-option input:disabled{cursor:not-allowed;opacity:.5}.panel-option-name{flex:1 1;font-weight:500}.panel-option-count,.panel-summary{color:var(--text-secondary);font-size:.6rem}.panel-summary{padding:2px 4px 0;text-align:right}.gene-selector .gene-search{display:flex;gap:4px;margin-bottom:8px}.gene-selector .gene-search input{background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:4px;color:var(--text-primary);flex:1 1;font-size:.7rem;padding:5px 8px}.search-all-toggle{font-size:.65rem;white-space:nowrap}.gene-selector .gene-search input:focus{border-color:var(--accent-blue);outline:none}.gene-selector .gene-search input::placeholder{color:var(--text-secondary)}.gene-categories{display:flex;flex-direction:column;gap:3px;max-height:200px;overflow-y:auto}.gene-category{background:var(--bg-secondary);border-radius:3px}.category-header{align-items:center;cursor:pointer;display:flex;gap:5px;padding:5px;transition:background .15s}.category-header:hover{background:#ffffff0d}.category-color{border-radius:2px;flex-shrink:0;height:8px;width:8px}.category-name{flex:1 1;font-size:.7rem;font-weight:500}.category-count{color:var(--text-secondary);font-size:.6rem}.expand-icon{color:var(--text-secondary);font-size:.65rem;text-align:center;width:12px}.category-genes{display:flex;flex-direction:column;gap:1px;padding:0 5px 5px}.category-genes .toggle-all{align-self:flex-start;font-size:.6rem;margin-bottom:4px}.gene-option{align-items:center;border-radius:2px;cursor:pointer;display:flex;font-size:.65rem;gap:4px;padding:2px 4px}.gene-option:hover{background:#ffffff0d}.gene-option input{accent-color:var(--accent-blue);height:10px;width:10px}.gene-actions{align-items:center;border-top:1px solid var(--border-color);display:flex;justify-content:space-between;margin-top:8px;padding-top:8px}.selected-count{color:var(--text-secondary);font-size:.65rem}.action-buttons{display:flex;gap:4px}.gene-freq{color:var(--text-secondary);font-size:.55rem;margin-left:auto}.gene-name{flex:1 1}.all-genes-search{max-height:200px;overflow-y:auto}.search-info{color:var(--text-secondary);font-size:.6rem;margin:0 0 5px}.gene-list{display:flex;flex-direction:column;gap:1px}.drug-selector{margin:4px 0 8px;position:relative}.drug-selector-trigger{align-items:center;background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:4px;cursor:pointer;display:flex;font-size:.7rem;justify-content:space-between;padding:5px 8px;transition:border-color .15s ease}.drug-selector-trigger:hover{border-color:var(--accent-primary)}.selected-drug-name{color:var(--text-primary);font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.drug-arrow,.drug-placeholder{color:var(--text-muted)}.drug-arrow{flex-shrink:0;font-size:.5rem;margin-left:4px}.drug-dropdown{background:var(--bg-primary);border:1px solid var(--border-color);border-radius:4px;box-shadow:0 4px 12px #00000026;left:0;margin-top:2px;position:absolute;right:0;top:100%;z-index:100}.drug-search{background:var(--bg-secondary);border:none;border-bottom:1px solid var(--border-color);box-sizing:border-box;color:var(--text-primary);font-size:.7rem;outline:none;padding:6px 8px;width:100%}.drug-search::placeholder{color:var(--text-muted)}.drug-list{max-height:250px;overflow-y:auto}.drug-group-header{background:var(--bg-tertiary);color:var(--text-muted);font-size:.6rem;font-weight:700;letter-spacing:.3px;padding:4px 8px;position:-webkit-sticky;position:sticky;text-transform:uppercase;top:0}.drug-item{align-items:center;cursor:pointer;display:flex;font-size:.65rem;justify-content:space-between;padding:4px 8px;transition:background .1s ease}.drug-item:hover{background:var(--bg-hover)}.drug-item.active{background:var(--accent-bg)}.drug-name{color:var(--text-primary);font-weight:500}.drug-target{color:var(--text-muted);flex-shrink:0;font-size:.6rem;margin-left:6px}.drug-no-results{color:var(--text-muted);font-size:.65rem;padding:12px 8px;text-align:center}.drug-count{border-top:1px solid var(--border-color);color:var(--text-muted);font-size:.55rem;padding:3px 8px;text-align:right}.display-options .toggle-option{align-items:center;border-radius:4px;cursor:pointer;display:flex;gap:6px;margin-bottom:8px;padding:4px 6px;transition:all .15s ease}.display-options .toggle-option:hover{background:var(--bg-hover)}.display-options .toggle-option input{accent-color:var(--accent-primary);cursor:pointer;height:12px;width:12px}.display-options .toggle-label{font-size:.7rem}.legend-mini{border-top:1px solid var(--border-color);display:flex;flex-direction:column;gap:4px;padding-top:8px}.legend-mini .legend-item{align-items:center;color:var(--text-secondary);display:flex;font-size:.65rem;gap:5px}.mutation-indicator{background:#64748b;border-radius:2px;height:10px;width:10px}.mutation-indicator.gof{background:#16a34a}.mutation-indicator.high-impact{background:#1e293b}.compound-indicator{background:#64748b;border-radius:2px;height:10px;position:relative;width:10px}.compound-indicator .circle-badge{background:#fbbf24;border:1px solid #fff;border-radius:50%;bottom:-2px;height:6px;left:-2px;position:absolute;width:6px}.loh-indicator{background:#1e293b;border-radius:2px;height:10px;position:relative;width:10px}.loh-indicator .star-badge{color:#ef4444;font-size:8px;position:absolute;right:-3px;text-shadow:0 0 2px #fff,0 0 2px #fff;top:-3px}.legend-section-label{color:var(--text-muted);font-size:.55rem;font-weight:600;letter-spacing:.3px;margin-bottom:2px;margin-top:6px;text-transform:uppercase}.legend-section-label:first-child{margin-top:0}.cnv-swatch{border:1px solid #00000026;border-radius:2px;flex-shrink:0;height:10px;width:10px}.legend-note{border-top:1px solid var(--border-color);color:var(--text-muted);font-size:.6rem;line-height:1.3;margin-top:6px;padding-top:6px}.legend-note strong{color:var(--text-secondary)}.export-controls{border-top:1px solid var(--border-color);padding-top:8px}.export-buttons{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:6px}.export-btn{background:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:4px;color:var(--text-primary);cursor:pointer;flex:1 1;font-size:.65rem;font-weight:500;min-width:40px;padding:5px 8px;transition:all .15s ease}.export-btn:hover:not(:disabled){background:var(--bg-hover);border-color:var(--accent-primary);color:var(--accent-primary)}.export-btn:disabled{cursor:not-allowed;opacity:.5}.share-btn{background:#0000;border:1px solid var(--accent-primary);border-radius:4px;color:var(--accent-primary);cursor:pointer;font-size:.65rem;font-weight:500;padding:6px 10px;transition:all .15s ease;width:100%}.share-btn:hover{background:var(--accent-primary);color:#fff}.share-btn.copied{background:#10b981;border-color:#10b981;color:#fff}.modal-overlay{align-items:center;background:#0006;bottom:0;display:flex;justify-content:center;left:0;padding:20px;position:fixed;right:0;top:0;z-index:1000}.modal-content{background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:12px;box-shadow:var(--shadow-lg);max-height:90vh;max-width:560px;overflow-y:auto;position:relative;width:100%}.modal-close{align-items:center;background:var(--bg-tertiary);border:none;border-radius:50%;color:var(--text-secondary);cursor:pointer;display:flex;font-size:20px;height:32px;justify-content:center;position:absolute;right:16px;top:16px;transition:all .15s;width:32px}.modal-close:hover{background:var(--bg-hover);color:var(--text-primary)}.modal-header{border-bottom:1px solid var(--border-color);padding:24px}.header-main{align-items:center;display:flex;gap:12px;margin-bottom:8px}.header-main h2{font-size:1.5rem;font-weight:600}.category-badge{border-radius:12px;color:#fff;font-size:.75rem;font-weight:500;padding:4px 10px;text-transform:capitalize}.header-sub{align-items:center;display:flex;gap:10px}.cell-line-name{color:var(--text-secondary);font-size:1rem}.header-cytoband{color:var(--text-muted);font-family:SF Mono,Monaco,Inconsolata,monospace;font-size:.8rem;margin-top:4px}.subtype-badge{border-radius:10px;color:#fff;font-size:.7rem;font-weight:500;padding:3px 8px}.section{border-bottom:1px solid var(--border-color);padding:20px 24px}.section:last-child{border-bottom:none}.section h3{font-size:.85rem;font-weight:600;letter-spacing:.5px;margin-bottom:12px;text-transform:uppercase}.no-data-note,.section h3{color:var(--text-secondary)}.no-data-note{font-size:.8rem;font-style:italic;margin:4px 0}.cnv-data-grid{grid-gap:8px;display:grid;gap:8px;grid-template-columns:1fr 1fr}.cnv-data-item{display:flex;flex-direction:column;gap:2px}.cnv-data-label{color:var(--text-muted);font-size:.7rem;letter-spacing:.3px;text-transform:uppercase}.cnv-data-value{align-items:center;color:var(--text-primary);display:flex;font-size:.9rem;font-weight:500;gap:6px}.cnv-data-value.mono{font-family:SF Mono,Monaco,Inconsolata,monospace}.cnv-indicator{border:1px solid #0000001a;border-radius:3px;flex-shrink:0;height:14px;width:14px}.cyto-context-mini{background:var(--bg-tertiary);border-left:3px solid #e74c3c;border-radius:6px;display:flex;flex-direction:column;gap:2px;margin-top:10px;padding:8px 10px}.cyto-event-header{align-items:center;display:flex;flex-wrap:wrap;gap:8px}.cyto-event-name{color:#e74c3c;font-size:.8rem;font-weight:600}.concordance-badge{border-radius:8px;font-size:.65rem;font-weight:500;padding:2px 6px}.concordance-badge.concordant{background:#dcfce7;border:1px solid #86efac;color:#166534}.concordance-badge.discrepant{background:#fef3c7;border:1px solid #fbbf24;color:#92400e}.concordance-badge.neutral{background:#f1f5f9;border:1px solid #cbd5e1;color:#475569}.cyto-context-mini.concordant{border-left-color:#16a34a}.cyto-context-mini.discrepant{border-left-color:#f59e0b}.cyto-note-inline{color:var(--text-secondary);font-size:.75rem;line-height:1.3}.mutations-list{display:flex;flex-direction:column;gap:12px}.mutation-card{background:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:8px;padding:12px}.mutation-main{align-items:center;display:flex;justify-content:space-between;margin-bottom:10px}.protein-change{font-family:SF Mono,Monaco,Inconsolata,monospace;font-size:.95rem;font-weight:500}.impact-badge{border-radius:10px;color:#fff;font-size:.7rem;font-weight:600;padding:3px 8px;text-transform:uppercase}.mutation-details{grid-gap:6px;display:grid;gap:6px;grid-template-columns:1fr 1fr}.detail-row{display:flex;font-size:.8rem;gap:6px}.detail-row .label{color:var(--text-secondary)}.detail-row .value{color:var(--text-primary)}.biallelic-indicator{background:#fef3c7;border:1px solid #fbbf24;border-radius:8px;margin:16px 24px;padding:12px}.biallelic-badge{color:#92400e;display:block;font-size:.9rem;font-weight:600;margin-bottom:6px}.biallelic-indicator p{color:#a16207;font-size:.8rem;margin:0}.info-grid{grid-gap:10px;display:grid;gap:10px;grid-template-columns:1fr 1fr}.info-item{display:flex;flex-direction:column;gap:2px}.info-item .label{color:var(--text-secondary);font-size:.75rem}.info-item .value{font-size:.85rem}.no-alterations{color:var(--text-secondary);padding:32px 24px;text-align:center}.db-links{display:flex;flex-wrap:wrap;gap:6px}.db-link{background:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:4px;color:var(--accent-blue);font-size:.75rem;padding:4px 8px;text-decoration:none;transition:all .15s}.db-link:hover{background:var(--accent-blue);border-color:var(--accent-blue);color:#fff}.gene-links-section{padding-bottom:16px}.gene-links{gap:8px}.gene-links .db-link{font-size:.8rem;padding:5px 10px}.mutation-main .badges{align-items:center;display:flex;flex-wrap:wrap;gap:6px}.hotspot-badge{background:#fef3c7;border:1px solid #fbbf24;color:#92400e;font-weight:500}.driver-badge,.hotspot-badge{border-radius:8px;font-size:.65rem;padding:2px 6px}.driver-badge{font-weight:600;text-transform:uppercase}.driver-badge.oncogene{background:#fee2e2;border:1px solid #ef4444;color:#b91c1c}.driver-badge.tsg{background:#dbeafe;border:1px solid #3b82f6;color:#1d4ed8}.lof-badge{background:#fae8ff;border:1px solid #d946ef;border-radius:8px;color:#a21caf;font-size:.65rem;font-weight:600;padding:2px 6px}.mutation-links{align-items:center;border-top:1px solid var(--border-color);display:flex;gap:8px;margin-top:10px;padding-top:10px}.links-label{color:var(--text-secondary);font-size:.75rem}.prediction.damaging{color:#ef4444;font-weight:500}.high-vaf{color:#ef4444;font-weight:600}.clinvar{color:#8b5cf6;font-weight:500}.civic-row{grid-column:1/-1}.civic-description{font-size:.8rem;font-style:italic;line-height:1.4}.drug-table-wrapper{overflow-x:auto}.drug-table{border-collapse:collapse;font-size:.75rem;width:100%}.drug-table th{color:var(--text-muted);font-size:.65rem;font-weight:600;letter-spacing:.3px;padding:4px 8px;text-align:left;text-transform:uppercase}.drug-table td,.drug-table th{border-bottom:1px solid var(--border-color)}.drug-table td{padding:3px 8px}.drug-name-cell{color:var(--text-primary);font-weight:500}.drug-target-cell{color:var(--text-secondary);font-size:.7rem}.drug-value-cell{font-weight:500}.info-item a{color:var(--accent-blue);text-decoration:none}.info-item a:hover{text-decoration:underline}.context-menu-overlay{bottom:0;left:0;position:fixed;right:0;top:0;z-index:2000}.context-menu{background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:8px;box-shadow:var(--shadow-lg);font-size:.85rem;max-height:420px;max-width:320px;min-width:200px;overflow-y:auto;padding:4px 0;position:fixed;z-index:2001}.context-menu-close{background:none;border:none;color:var(--text-muted);cursor:pointer;float:right;font-size:1.1rem;line-height:1;padding:2px 8px;position:-webkit-sticky;position:sticky;top:0;z-index:1}.context-menu-close:hover,.context-menu-item{color:var(--text-primary)}.context-menu-item{align-items:center;background:none;border:none;cursor:pointer;display:flex;font-family:inherit;font-size:.85rem;gap:8px;padding:7px 14px;text-align:left;transition:background .1s;width:100%}.context-menu-item:hover{background:var(--bg-hover)}.context-menu-item.active{background:var(--accent-primary);color:#fff}.context-menu-item .item-icon{flex-shrink:0;font-size:.8rem;text-align:center;width:16px}.context-menu-item .item-label{flex:1 1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.context-menu-divider{background:var(--border-color);height:1px;margin:4px 0}.context-menu-header{color:var(--text-muted);font-size:.7rem;font-weight:600;letter-spacing:.5px;padding:6px 14px 4px;pointer-events:none;text-transform:uppercase}.context-menu-item.external-link{color:var(--accent-blue)}.context-menu-item.external-link:hover{background:var(--accent-blue);color:#fff}.driver-item{align-items:center;color:var(--text-primary);display:flex;font-size:.8rem;gap:8px;padding:5px 14px}.driver-gene{font-family:SF Mono,Monaco,Inconsolata,monospace;font-weight:600;min-width:60px}.driver-badges{display:flex;flex-wrap:wrap;gap:3px}.driver-mini-badge{border-radius:6px;font-size:.6rem;font-weight:500;padding:1px 5px;white-space:nowrap}.driver-mini-badge.oncogene{background:#fee2e2;color:#b91c1c}.driver-mini-badge.tsg{background:#dbeafe;color:#1d4ed8}.driver-mini-badge.hotspot{background:#fef3c7;color:#92400e}.driver-mini-badge.truncating{background:#f3e8ff;color:#7c3aed}.driver-mini-badge.amplification{background:#fce4ec;color:#c62828}.driver-mini-badge.hom-del{background:#e3f2fd;color:#1565c0}.driver-mini-badge.concordant{background:#dcfce7;color:#166534}.driver-mini-badge.recurrent{background:#fce4ec;color:#880e4f;font-weight:600}.driver-mini-badge.translocation{background:#f3e8ff;color:#6b21a8;font-family:SF Mono,Monaco,Inconsolata,monospace;font-size:.55rem}.driver-mini-badge.ig-partner{background:#e0f2f1;color:#00695c}.driver-mini-badge.structural{background:#fff3e0;color:#e65100}.driver-mini-badge.no-literature{background:#f5f5f5;color:#9e9e9e;font-style:italic}.driver-mini-badge.rna-seq{background:#e8f5e9;color:#2e7d32;font-size:.55rem}.driver-mini-badge.curated{background:#fff8e1;color:#f57f17;font-size:.55rem}a.driver-mini-badge{cursor:pointer;text-decoration:none}a.driver-mini-badge:hover{filter:brightness(.9);text-decoration:underline}.context-menu-freezer{background:#eff6ff;border-left:2px solid #60a5fa;border-radius:0 4px 4px 0;display:flex;flex-direction:column;gap:2px;margin:2px 6px;padding:5px 14px}.context-menu-freezer .freezer-label{color:#1d4ed8;font-size:.72rem;font-weight:600}.context-menu-freezer .freezer-entry{align-items:center;color:#374151;display:flex;font-size:.68rem;gap:5px}.context-menu-freezer .freezer-cap-dot{border:1px solid #0003;border-radius:50%;flex-shrink:0;height:8px;width:8px}.context-menu-note{background:#fffbeb;border-left:2px solid #f59e0b;border-radius:0 4px 4px 0;color:#b45309;font-size:.7rem;line-height:1.4;margin:2px 6px;padding:6px 14px}.context-menu-lymphgen{align-items:center;background:#f0f9ff;border-left:2px solid #7c3aed;border-radius:0 4px 4px 0;display:flex;gap:6px;margin:2px 6px;padding:5px 14px}.context-menu-lymphgen .lymphgen-label{color:#7c3aed;font-size:.72rem;font-weight:600}.context-menu-lymphgen .lymphgen-subtype{color:#4c1d95;font-family:SF Mono,Monaco,Inconsolata,monospace;font-size:.78rem;font-weight:700}.context-menu-lymphgen .lymphgen-source{color:#6b7280;font-size:.65rem}.context-menu-item.danger{color:#ef4444}.context-menu-item.danger:hover{background:#fee2e2;color:#b91c1c}.app{background:var(--bg-primary);display:flex;flex-direction:column;min-height:100vh}.error-state,.loading-state{align-items:center;display:flex;justify-content:center;min-height:100vh}.loading-spinner{text-align:center}.spinner{animation:spin .8s linear infinite;border:3px solid var(--border-color);border-radius:50%;border-top-color:var(--accent-primary);height:48px;margin:0 auto 16px;width:48px}@keyframes spin{to{transform:rotate(1turn)}}.error-message{background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:12px;box-shadow:var(--shadow-lg);max-width:400px;padding:32px;text-align:center}.error-message h2{color:var(--accent-red);margin-bottom:16px}.beta-banner{background:linear-gradient(90deg,#f59e0b,#d97706);color:#1a1a1a;font-weight:600;letter-spacing:.5px;padding:5px 12px}.beta-banner,.beta-footer{font-size:.75rem;text-align:center}.beta-footer{background:var(--bg-secondary);border-top:1px solid var(--border-color);color:var(--text-muted);padding:16px 28px}.beta-footer p{margin:4px 0}.beta-footer .bloom-quote{color:var(--text-muted);font-size:.7rem;font-style:italic;margin:8px auto 0;max-width:600px;opacity:.7}.app-header{align-items:center;background:var(--bg-secondary);border-bottom:1px solid var(--border-color);box-shadow:var(--shadow-sm);display:flex;justify-content:space-between;padding:20px 28px}.header-credit{color:var(--text-muted);font-size:.8rem;white-space:nowrap}.header-content h1{color:var(--text-primary);font-size:1.6rem;font-weight:700;margin-bottom:6px}.version-badge{background:#6366f133;border-radius:10px;color:#818cf8;font-size:.55rem;font-weight:500;letter-spacing:.5px;padding:2px 8px;text-transform:uppercase;vertical-align:middle}.subtitle{color:var(--text-secondary);font-size:.9rem}.app-main{display:flex;flex:1 1;overflow:hidden}.controls-panel{background:var(--bg-secondary);border-right:1px solid var(--border-color);display:flex;flex-direction:column;font-size:.8rem;gap:10px;min-width:220px;overflow-y:auto;padding:12px;width:220px}.visualization-panel{display:flex;flex:1 1;flex-direction:column;overflow:hidden;padding:20px}.oncoprint-container{background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:12px;box-shadow:var(--shadow-sm);flex:1 1;overflow:auto;padding:20px}.control-section{background:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:8px;padding:10px}.control-section h3{align-items:center;color:var(--text-secondary);display:flex;font-size:.65rem;font-weight:600;gap:6px;letter-spacing:.5px;margin-bottom:8px;text-transform:uppercase}.control-section h3:before{background:linear-gradient(180deg,var(--accent-primary),var(--accent-purple));border-radius:2px;content:"";height:10px;width:2px}.filter-option{align-items:center;border-radius:4px;cursor:pointer;display:flex;gap:6px;padding:4px 6px;transition:all .15s ease}.filter-option:hover{background:var(--bg-hover)}.filter-option input[type=checkbox]{accent-color:var(--accent-primary);cursor:pointer;height:12px;width:12px}.filter-option label{cursor:pointer;flex:1 1;font-size:.75rem}.filter-option .count{color:var(--text-muted);font-size:.65rem}.btn{border:none;border-radius:5px;cursor:pointer;font-size:.7rem;font-weight:500;padding:6px 12px;transition:all .15s ease}.btn-primary{background:var(--accent-primary);box-shadow:var(--shadow-sm);color:#fff}.btn-primary:hover{background:#5558e3;box-shadow:var(--shadow-md);transform:translateY(-1px)}.btn-secondary{background:var(--bg-secondary);border:1px solid var(--border-color);color:var(--text-primary)}.btn-secondary:hover{background:var(--bg-hover);border-color:var(--border-light)}.btn-small{font-size:.65rem;padding:4px 8px}.color-indicator{border-radius:3px;box-shadow:inset 0 0 0 1px #0000001a;flex-shrink:0;height:10px;width:10px}@media (max-width:900px){.app-main{flex-direction:column}.controls-panel{border-bottom:1px solid var(--border-color);border-right:none;flex-direction:row;flex-wrap:wrap;min-width:0;min-width:auto;width:100%}.control-section{flex:1 1;min-width:200px}}
/*# sourceMappingURL=main.fe7bea44.css.map*/