:root{color-scheme:light;font-family:IBM Plex Sans,"Source Sans 3",Segoe UI,sans-serif;--genes-panel-width: 360px;--right-column-width: 280px;--center-column-max-width: 920px;--dashboard-max-width: calc( var(--genes-panel-width) + var(--center-column-max-width) + var(--right-column-width) + 16px );--left-rail-height: calc(100dvh - 20px) ;--bg: #d7d9db;--bg-2: #cfd3d6;--panel: #f4f5f6;--panel-soft: #eceef0;--line: #b8bfc5;--ink: #172125;--muted: #5a656d;--accent: #246964;--accent-soft: #d9e8e6;--danger: #c62323;--focus: #1f6ea6;--shadow: 0 1px 3px rgba(10, 18, 22, .12)}*{box-sizing:border-box}html,body,#app{margin:0;min-height:100%}body{background:linear-gradient(170deg,var(--bg),var(--bg-2));color:var(--ink);overflow-x:hidden;overflow-y:auto}.shell-root{min-height:100dvh;height:auto;padding:10px;display:flex;flex-direction:column;gap:8px;overflow:visible}.app-topbar{display:flex;justify-content:space-between;align-items:baseline;gap:12px;width:100%;max-width:var(--dashboard-max-width);margin-inline:auto;border:1px solid var(--line);border-radius:10px;background:#f2f3f4;padding:8px 10px;box-shadow:var(--shadow)}.app-topbar h1{margin:0;font-size:1rem}.topbar-meta{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:12px;font-size:.78rem;color:var(--muted)}.app-grid{min-height:0;display:grid;gap:8px;width:100%;max-width:var(--dashboard-max-width);margin-inline:auto;grid-template-columns:var(--genes-panel-width) minmax(0,1fr) var(--right-column-width);grid-template-rows:auto auto auto;align-items:start;overflow:visible}.area-left{grid-column:1;grid-row:1 / span 3;display:flex;min-height:0;height:auto;align-self:start;position:sticky;top:10px;max-height:calc(100dvh - 20px);overflow:visible}.area-left>*{flex:1 1 auto;min-height:0;height:100%;width:100%}.area-center-top{grid-column:2;grid-row:1;min-height:0;overflow:visible}.area-right-stack{grid-column:3;grid-row:1;display:grid;grid-template-rows:1.6fr .95fr .95fr;gap:8px;min-height:0;overflow:hidden}.area-info{grid-column:2 / 4;grid-row:2;min-height:0;overflow:visible}.area-bottom-grid{grid-column:2 / 4;grid-row:3;min-height:0;display:grid;grid-template-columns:minmax(280px,1.25fr) minmax(0,1.75fr);grid-template-rows:auto;align-items:start;gap:8px;overflow:visible}.panel,.left-rail{border:1px solid var(--line);border-radius:10px;background:var(--panel);box-shadow:var(--shadow);min-height:0}.panel{padding:9px 10px}.center-stack-panel{display:grid;grid-template-rows:minmax(360px,2.1fr) minmax(170px,1fr);gap:8px;padding:8px;overflow:hidden;background:#f1f2f3;border-color:#aeb5bb;box-shadow:0 2px 5px #0c141929}.center-stack-layout{display:flex;flex-direction:column;gap:8px;min-height:0;overflow:visible}.center-stack-layout>*{min-height:0}.center-stack-panel>*{min-height:0}.panel h2,.panel h3{margin:0 0 4px;letter-spacing:.01em}.panel p{margin:0 0 8px;color:var(--muted)}.panel.compact p{margin:0}.panel-title-row{display:flex;justify-content:space-between;align-items:baseline;gap:8px}.panel-title-row h2,.panel-title-row h3{margin:0}.mini-note{color:var(--muted);font-size:.72rem}.inline-error{color:var(--danger);font-size:.82rem}.panel-kv{display:flex;justify-content:space-between;gap:10px;font-size:.84rem;margin-bottom:4px}.panel-kv span{color:var(--muted)}.panel-kv strong{font-weight:600;overflow-wrap:anywhere}.kv-list{display:flex;flex-direction:column;gap:4px}.kv-row{display:flex;justify-content:space-between;gap:10px;font-size:.8rem}.kv-row span{color:var(--muted)}.kv-row strong{font-weight:600;overflow-wrap:anywhere}.info-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px 12px}.left-rail{display:flex;flex-direction:column;height:var(--left-rail-height);max-height:var(--left-rail-height);min-height:0;overflow:hidden}.left-controls{flex:0 0 auto;padding:8px;border-bottom:1px solid var(--line);display:flex;flex-direction:column;gap:7px;position:sticky;top:0;z-index:2;background:var(--panel)}.left-controls h2{margin:0}.search-label{font-size:.78rem;color:var(--muted)}.search-input{width:100%;border:1px solid var(--line);border-radius:8px;padding:8px 9px;font-size:.9rem}.search-input:focus{outline:2px solid color-mix(in srgb,var(--accent) 45%,white);outline-offset:1px}.histogram-card{border:1px solid var(--line);border-radius:8px;background:#eceff1;padding:7px}.histogram-svg{width:100%;height:92px;cursor:pointer;display:block}.histogram-bar{transition:fill .12s ease-out}.histogram-marker{stroke:var(--danger);stroke-width:1.8}.histogram-meta{display:flex;justify-content:space-between;font-size:.75rem;color:var(--muted)}.viewer-controls{display:inline-flex;align-items:center;gap:8px;flex-wrap:wrap}.subnetwork-filter-controls{border:1px solid var(--line);border-radius:8px;background:#eef1f3;padding:8px;display:flex;flex-direction:column;gap:8px}.subnetwork-filter-top{display:flex;justify-content:space-between;gap:8px;align-items:center;flex-wrap:wrap}.subnetwork-filter-grid{display:grid;grid-template-columns:1fr;gap:8px}.subnetwork-threshold-control{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:8px}.subnetwork-threshold-label{font-size:.72rem;color:var(--muted);white-space:nowrap}.subnetwork-threshold-value{font-size:.72rem;color:var(--muted);font-variant-numeric:tabular-nums}.subnetwork-threshold-control input[type=range]{width:100%}.subnetwork-filter-group{display:flex;flex-direction:column;gap:4px}.subnetwork-filter-label{font-size:.74rem;color:var(--muted)}.filter-chip{border:1px solid var(--line);border-radius:999px;background:#fff;padding:3px 8px;font-size:.7rem;line-height:1.25;cursor:pointer}.filter-chip.active{border-color:var(--accent);background:var(--accent-soft);color:color-mix(in srgb,var(--accent) 85%,black);font-weight:600}.small-action-btn{border:1px solid var(--line);background:#fff;border-radius:8px;padding:4px 8px;font-size:.75rem;color:var(--ink);cursor:pointer}.small-action-btn:hover{background:#f0f5f4}.control-block{border:1px solid var(--line);border-radius:8px;background:#eef1f3;padding:7px}.control-title{font-size:.78rem;color:var(--muted);margin-bottom:6px}.toggle-row{display:grid;grid-template-columns:1fr 1fr;gap:6px}.toggle{border:1px solid var(--line);border-radius:8px;background:#fff;padding:6px 8px;cursor:pointer;font-size:.82rem}.toggle.active{border-color:var(--accent);background:var(--accent-soft);color:color-mix(in srgb,var(--accent) 85%,black);font-weight:600}.checkbox-list{display:flex;flex-wrap:wrap;gap:6px 10px}.checkbox-row{display:inline-flex;align-items:center;gap:5px;font-size:.82rem}.gene-list-scroll{flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;background:#edf0f2}.gene-list-header{position:sticky;top:0;z-index:2;display:grid;grid-template-columns:10px minmax(0,1fr) minmax(0,1fr) auto;align-items:center;gap:8px;padding:6px 14px;border-bottom:1px solid var(--line);background:#dfe5ea;font-size:.68rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}.gene-list-header-spacer{inline-size:10px}.empty-list-message{padding:14px;color:var(--muted);font-size:.86rem}.list-row-host{padding:0 6px}.list-row{width:100%;border:none;background:transparent;text-align:left;display:grid;align-items:center;padding:6px 8px;border-radius:8px}.section-row{grid-template-columns:1fr auto;border-top:1px solid var(--line);border-bottom:1px solid var(--line);background:#dce2e7;font-size:.78rem;color:color-mix(in srgb,var(--accent) 85%,black);font-weight:700;margin-top:4px}.section-meta{color:var(--muted);font-weight:500}.group-row{grid-template-columns:1fr;gap:2px;background:#e7ebef;border:1px solid color-mix(in srgb,var(--line) 90%,white);margin-top:2px}.group-name{font-size:.83rem;font-weight:600}.group-meta{font-size:.73rem;color:var(--muted)}.gene-row{grid-template-columns:10px minmax(0,1fr) minmax(0,1fr) auto;gap:8px;cursor:pointer;margin-top:0}.gene-row:hover{background:#e3eaef}.gene-row.active{background:color-mix(in srgb,var(--accent-soft) 80%,#edf1f4);outline:1px solid color-mix(in srgb,var(--accent) 38%,white)}.gene-row-shell{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:stretch;gap:6px;margin-top:2px}.goi-toggle-chip{border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--muted);font-size:.68rem;min-width:46px;padding:4px 6px;cursor:pointer}.goi-toggle-chip.active{border-color:var(--accent);background:var(--accent-soft);color:color-mix(in srgb,var(--accent) 85%,black);font-weight:600}.goi-toggle-chip.primary{border-color:#b62727;color:#7c1a1a;background:#f8e5e5}.gene-row.goi-selected{border:1px solid color-mix(in srgb,var(--accent) 35%,white)}.gene-row.goi-primary{border:1px solid color-mix(in srgb,#b62727 35%,white)}.gene-goi-tag{grid-column:2 / span 2;justify-self:start;font-size:.64rem;color:#7c1a1a;font-weight:600}.goi-selection-hint{color:#7c1a1a}.coord-dot{width:8px;height:8px;border-radius:50%;display:inline-block;align-self:center}.coord-dot.has-coords{background:var(--accent)}.coord-dot.no-coords{background:transparent;border:1px solid var(--muted)}.gene-main{font-size:.86rem;font-weight:600}.gene-secondary{font-size:.76rem;color:var(--muted)}.gene-fci{font-variant-numeric:tabular-nums;font-size:.76rem;color:var(--muted)}.status-screen{min-height:100vh;display:grid;place-items:center;text-align:center;padding:24px}.status-screen h1{margin:0 0 8px}.status-screen p{margin:0;color:var(--muted)}.status-screen.error h1{color:var(--danger)}.center-panel-shell{display:grid;grid-template-rows:auto auto;gap:8px;height:auto;min-height:0}.subnetwork-container-wrap{position:relative;display:flex;justify-content:flex-start;width:100%;min-height:0;overflow:visible;background:transparent}.subnetwork-viewer-panel{display:flex;flex-direction:column;gap:8px;overflow:visible}.subnetwork-canvas-shell{position:relative;inline-size:min(100%,calc(var(--genes-panel-width) * 2.5));max-inline-size:calc(var(--genes-panel-width) * 2.5);aspect-ratio:1 / 1;border:1px solid color-mix(in srgb,var(--line) 82%,white);border-radius:8px;background:#e6ecef;overflow:hidden}.subnetwork-canvas{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%}.graph-hover-preview{position:absolute;z-index:10;max-width:240px;background:#122221ed;color:#fff;border-radius:8px;font-size:.72rem;padding:6px 8px;pointer-events:none}.hover-title{font-weight:700}.subnetwork-inspector-card{display:flex;flex-direction:column;gap:8px;min-height:0;overflow:hidden}.subnetwork-inspector-body{min-height:0;max-height:32rem;overflow:auto}.inspector-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.inspector-card{border:1px solid var(--line);border-radius:8px;background:#eceff1;padding:8px;min-height:0}.inspector-module-section{margin-top:8px;border-top:1px solid var(--line);padding-top:6px;display:flex;flex-direction:column;gap:6px}.inspector-module-group{border:1px solid var(--line);border-radius:6px;background:#f5f8f9;padding:6px;display:flex;flex-direction:column;gap:4px}.inspector-module-standard{font-size:.72rem;font-weight:700}.inspector-module-source{display:flex;flex-direction:column;gap:3px}.inspector-module-source-label,.inspector-module-empty{font-size:.68rem;color:var(--muted)}.inspector-card h4,.edge-details h5{margin:0 0 6px}.inspector-card.edge{grid-column:1 / -1}.edge-details{margin-top:8px}.edge-details summary{cursor:pointer;font-size:.8rem;color:var(--ink)}.path-list{max-height:120px;overflow:auto;border:1px solid var(--line);border-radius:6px;background:#fff}.path-item{font-size:.72rem;padding:4px 6px;border-bottom:1px solid #edf2f0;overflow-wrap:anywhere}.path-item:last-child{border-bottom:none}.summary-panel{min-height:0;overflow:hidden;display:flex;flex-direction:column;gap:4px}.summary-chart-list{display:flex;flex-direction:column;gap:4px}.summary-chart-controls{margin:2px 0 4px}.summary-threshold-control{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:8px;align-items:center}.summary-threshold-label{font-size:.72rem;color:var(--muted);white-space:nowrap}.summary-threshold-value{font-size:.72rem;color:var(--muted);font-variant-numeric:tabular-nums}.summary-threshold-control input[type=range]{width:100%}.summary-chart-row{display:grid;grid-template-columns:minmax(0,1fr) 90px auto;align-items:center;gap:8px}.summary-chart-label{font-size:.74rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.summary-chart-track{height:9px;border-radius:999px;border:1px solid var(--line);background:#e8ecef;overflow:hidden}.summary-chart-bar{height:100%;background:color-mix(in srgb,var(--accent) 72%,white)}.summary-chart-value{font-size:.72rem;font-variant-numeric:tabular-nums;color:var(--muted)}.ortholog-section{margin-top:10px;border-top:1px solid var(--line);padding-top:8px}.ortholog-section h3{margin:0 0 8px}.ortholog-list{display:flex;flex-direction:column;gap:6px;margin-top:8px}.ortholog-item summary{cursor:pointer;font-size:.8rem}.term-chip-wrap{margin-top:6px;display:flex;flex-wrap:wrap;gap:6px}.term-chip{display:inline-flex;border:1px solid var(--line);border-radius:999px;background:#f3f8f7;font-size:.72rem;line-height:1.2;padding:4px 8px}.bottom-panel{min-height:0;overflow:visible}.neighbors-panel{display:flex;flex-direction:column;overflow:hidden}.bottom-right-stack{display:flex;flex-direction:column;gap:8px;min-height:0}.bottom-right-row{display:grid;grid-template-columns:1fr 1fr;gap:8px;align-items:start;min-height:0}.heatmap-panel{overflow:hidden;display:grid;grid-template-rows:auto minmax(0,1fr);align-self:start;aspect-ratio:1 / 1;width:100%}.enrichment-panel,.strain-panel{overflow:auto}.neighbors-list{margin-top:8px;border-top:1px solid var(--line);padding-top:6px;overflow:auto;display:flex;flex-direction:column;gap:4px}.neighbor-row{width:100%;border:1px solid var(--line);border-radius:8px;background:#eef1f3;text-align:left;display:grid;grid-template-columns:10px minmax(0,1fr) auto;grid-template-rows:auto auto auto;gap:3px 8px;padding:6px 8px;cursor:pointer}.neighbor-row:hover{background:#e4eaef}.neighbor-row.hovered{border-color:color-mix(in srgb,var(--accent) 45%,white)}.neighbor-row.pinned{border-color:#2f6192;background:#edf4fb}.neighbor-domain-dot{width:8px;height:8px;border-radius:50%;align-self:center;margin-top:3px}.neighbor-main{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;grid-column:2;grid-row:1}.neighbor-gene{font-size:.82rem;font-weight:700}.neighbor-symbol{font-size:.74rem;color:var(--muted)}.neighbor-description{grid-column:2 / span 2;grid-row:2;color:var(--muted);font-size:.74rem;line-height:1.25;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}.neighbor-weight{grid-column:3;grid-row:1;justify-self:end;font-size:.75rem;font-variant-numeric:tabular-nums}.neighbor-domain-label{grid-column:2 / span 2;grid-row:3;justify-self:start;color:var(--muted);font-size:.7rem}.warning-badge{border:1px solid #d4aa4b;color:#6e5116;background:#fff8e7;border-radius:999px;font-size:.68rem;padding:2px 8px}.heatmap-shell{display:flex;flex-direction:column;gap:6px;height:100%;width:100%;min-width:0;min-height:0;overflow:hidden}.heatmap-panel-header{display:flex;flex-direction:column;gap:8px}.heatmap-top-labels{display:grid;gap:0;max-width:100%;overflow:hidden}.heatmap-main-row{display:flex;gap:6px;align-items:flex-start;min-height:0;flex:1 1 auto}.heatmap-left-labels{width:132px;display:grid;gap:0}.heatmap-label-col,.heatmap-label-row{border:none;background:transparent;color:var(--muted);cursor:pointer;padding:0}.heatmap-label-col{font-size:var(--heatmap-col-font-size, .6rem);writing-mode:vertical-rl;transform:rotate(180deg);text-align:left;overflow:hidden;white-space:nowrap}.heatmap-label-row{text-align:right;padding-right:4px;font-size:var(--heatmap-row-font-size, .64rem);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.heatmap-label-col:hover,.heatmap-label-row:hover,.heatmap-label-col.hovered,.heatmap-label-row.hovered{color:var(--accent)}.heatmap-label-col.goi,.heatmap-label-row.goi{color:var(--danger);font-weight:700}.heatmap-label-col.goi:hover,.heatmap-label-row.goi:hover,.heatmap-label-col.goi.hovered,.heatmap-label-row.goi.hovered,.heatmap-label-col.goi.pinned,.heatmap-label-row.goi.pinned{color:var(--danger)}.heatmap-label-col.pinned,.heatmap-label-row.pinned{color:#2f6192;font-weight:700}.heatmap-canvas-wrap{position:relative;border:1px solid var(--line);background:#f3f5f7}.heatmap-canvas{display:block}.heatmap-tooltip{position:absolute;z-index:4;pointer-events:none;background:#112120eb;color:#fff;border-radius:6px;font-size:.7rem;padding:4px 6px;transform:translate(6px,6px);white-space:nowrap}.tab-row{display:flex;gap:6px;margin:8px 0}.tab-btn{border:1px solid var(--line);border-radius:8px;padding:4px 8px;background:#edf0f2;cursor:pointer;font-size:.75rem}.tab-btn.active{border-color:var(--accent);background:var(--accent-soft);font-weight:600}.enrichment-bars{display:flex;flex-direction:column;gap:5px;max-height:170px;overflow:auto}.enrichment-row{display:grid;grid-template-columns:minmax(0,1fr) 72px auto;gap:6px;align-items:center}.enrichment-label{font-size:.73rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.enrichment-track{height:8px;border-radius:999px;border:1px solid var(--line);background:#e8ecef}.enrichment-bar{height:100%;border-radius:999px;background:color-mix(in srgb,var(--accent) 70%,white)}.enrichment-value{font-size:.7rem;color:var(--muted);font-variant-numeric:tabular-nums}.query-membership-section{margin-top:8px;border-top:1px solid var(--line);padding-top:6px}.query-membership-section h4{margin:0 0 6px;font-size:.8rem}.query-membership-group+.query-membership-group{margin-top:6px}.query-membership-title{font-size:.72rem;color:var(--muted);margin-bottom:4px}.chip-wrap{display:flex;flex-wrap:wrap;gap:4px}.membership-chip{display:inline-flex;border:1px solid var(--line);border-radius:999px;background:#e8edf0;font-size:.68rem;line-height:1.2;padding:3px 7px}.strain-list{margin-top:6px;max-height:170px;overflow:auto;display:flex;flex-direction:column;gap:5px}.strain-row{display:grid;grid-template-columns:minmax(0,1fr) 58px auto auto;gap:5px;align-items:center}.strain-label{font-size:.72rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.strain-track{height:8px;border-radius:999px;border:1px solid var(--line);background:#e8ecef}.strain-bar{height:100%;border-radius:999px;background:color-mix(in srgb,var(--accent) 60%,#e6f3f1)}.strain-value,.strain-raw{font-size:.67rem;color:var(--muted);font-variant-numeric:tabular-nums}.domain-circle-panel{min-height:0;overflow:hidden;display:flex;flex-direction:column;gap:6px}.domain-circle-wrap{position:relative;border:1px solid var(--line);border-radius:8px;background:#eceff1;min-height:0;flex:1 1 auto;min-block-size:200px;overflow:hidden}.domain-circle-svg{width:100%;height:100%;display:block}.domain-point{opacity:.5;stroke:#ffffffb8;stroke-width:1;cursor:pointer}.domain-network-edge{stroke:#000;stroke-width:1.5;pointer-events:none}.domain-network-edge-current{stroke:#bf1e1e;stroke-width:1.5;pointer-events:none}.domain-point.neighbor{opacity:.5;stroke:color-mix(in srgb,var(--accent) 45%,white);stroke-width:1.6}.domain-point.goi{opacity:.5;stroke:#bf1e1e;stroke-width:2.4}.domain-point.hovered{opacity:.5;stroke:#0f6e67;stroke-width:2.2}.domain-point.pinned{opacity:.5;stroke:#265f95;stroke-width:2.2}.domain-hover-tooltip{position:absolute;z-index:6;pointer-events:none;max-width:220px;padding:4px 8px;border-radius:6px;background:#111e22eb;color:#fff;font-size:.7rem;line-height:1.2}.right-stack-note{padding:0 2px}button:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible,[role=tab]:focus-visible,[role=option]:focus-visible{outline:2px solid var(--focus);outline-offset:1px}.panel-error-fallback{display:flex;flex-direction:column;justify-content:center;gap:4px;background:#f4eef0}@media(max-width:1180px){body{overflow:auto}.shell-root{height:auto;min-height:100dvh;overflow:visible}.app-grid{grid-template-columns:1fr;grid-template-rows:auto auto auto auto auto;overflow:visible}.area-left,.area-center-top,.area-right-stack,.area-info,.area-bottom-grid{grid-column:1}.area-left{grid-row:1;min-height:640px;position:static;top:auto;max-height:none}.area-center-top{grid-row:2}.area-right-stack{grid-row:3;grid-template-rows:auto auto auto}.area-info{grid-row:4}.area-bottom-grid{grid-row:5;grid-template-columns:1fr;grid-template-rows:auto auto}.neighbors-panel{grid-column:1;grid-row:auto}.bottom-right-row{grid-template-columns:1fr}.heatmap-panel{aspect-ratio:auto;min-height:420px}.heatmap-main-row{flex-direction:column}.heatmap-top-labels{margin-left:0!important}.heatmap-left-labels{width:100%;grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:none!important;max-height:96px;overflow:auto;border:1px solid var(--line);border-radius:8px;padding:4px;gap:4px}.heatmap-label-row{text-align:left}.left-rail{height:auto;max-height:none}}
