:root{color-scheme:dark;--bg: #0b0d11;--panel: #14171d;--panel-2: #1b1f27;--panel-3: #232833;--line: #2b313d;--line-soft: #21262f;--text: #e8ebf1;--muted: #98a2b3;--danger: #ff6b6b;--ok: #46c78a;--warn: #f5a524;--accent-rgb: 47, 125, 255;--accent: rgb(var(--accent-rgb));--warn-rgb: 245, 165, 36;--on-accent: #06101f;--on-accent-soft: rgba(6, 16, 31, .72);--text-accent: #cfe0ff;--radius: 8px;--radius-sm: 5px;--radius-card: 10px;--radius-lg: 12px;--radius-pill: 999px;--space-1: 2px;--space-2: 4px;--space-3: 6px;--space-4: 8px;--space-5: 10px;--space-6: 12px;--space-7: 16px;--space-8: 22px;--text-2xs: 10px;--text-xs: 11px;--text-sm: 12px;--text-md: 13px;--text-lg: 14px;--text-xl: 17px;--font-mono: ui-monospace, SFMono-Regular, Menlo, monospace;--surface-card: rgba(20, 23, 29, .94);--surface-dock: rgba(11, 13, 17, .92);--surface-float: rgba(27, 31, 39, .97);--surface-sheet: rgba(20, 23, 29, .97);--surface-readout: rgba(20, 23, 29, .82);--surface-hover: #2c323e;--surface-open: #232b3a;--surface-sunken: #0b0e13;--stage-bg: #05070a;--scrim: rgba(5, 7, 10, .55);--overlay-bg: rgba(5, 7, 10, .9);--hairline: rgba(255, 255, 255, .06);--hairline-strong: rgba(255, 255, 255, .35);--line-strong: #3a4150;--blur: 10px;--blur-sm: 6px;--shadow-1: 0 6px 18px rgba(0, 0, 0, .5);--shadow-2: 0 8px 22px rgba(0, 0, 0, .55);--shadow-3: 0 10px 34px rgba(0, 0, 0, .5);--shadow-4: 0 18px 50px rgba(0, 0, 0, .55);--shadow-sheet: 0 -10px 34px rgba(0, 0, 0, .5);--dim: .55;--dim-hover: .85;--dim-disabled: .4;--btn-w: 32px;--btn-h: 30px;--icon-btn: 22px;--check: 15px;--thumb: 13px;--range-h: 18px;--row-min: 38px;--legend-row: 0px;--ease: cubic-bezier(.22, .9, .3, 1);--fast: .12s;--med: .2s;--slow: .28s;font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:13px}*{box-sizing:border-box}html,body{-webkit-user-select:none;user-select:none}body{margin:0;background:var(--bg);color:var(--text);overscroll-behavior:none}:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.app{-webkit-user-select:none;user-select:none;display:grid;grid-template-rows:46px minmax(0,1fr);grid-template-columns:minmax(0,1fr);height:100vh;height:100dvh;width:100vw;overflow:hidden}.toolbar{display:flex;align-items:center;gap:6px;padding:0 10px;background:var(--panel);border-bottom:1px solid var(--line);position:relative;z-index:10}.brand{font-size:var(--text-md);font-weight:700;letter-spacing:.2px;margin-right:6px;white-space:nowrap}.tool-group{display:flex;gap:3px}.tool-btn{width:var(--btn-w);height:var(--btn-h);display:grid;place-items:center;background:var(--panel-3);border:1px solid transparent;border-radius:var(--radius-sm);color:var(--muted);cursor:pointer;padding:0}.tool-btn{transition:background var(--fast) var(--ease),color var(--fast) var(--ease),transform var(--fast) var(--ease)}.tool-btn:hover:not(:disabled){background:var(--surface-hover);color:var(--text)}.tool-btn:active:not(:disabled){transform:scale(.92)}.tool-btn-active,.tool-btn-active:hover:not(:disabled){background:var(--accent);color:var(--on-accent)}.tool-btn:disabled{opacity:var(--dim-disabled);cursor:not-allowed}.toolbar-sep{width:1px;height:20px;background:var(--line);margin:0 4px;flex:none}.dataset-title-btn{display:block;width:100%;padding:0;background:none;border:none;color:inherit;font:inherit;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:pointer}.dataset-title-btn:active{color:var(--text)}.dataset-title{flex:1;min-width:0;margin:0;text-align:center;font-size:var(--text-sm);font-weight:600;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:0 12px}.stage{position:relative;min-width:0;min-height:0;background:var(--stage-bg);overflow:hidden}.canvas-host{position:absolute;inset:0;touch-action:none;-webkit-touch-callout:none}input,textarea,code{-webkit-user-select:text;user-select:text}.split{position:absolute;inset:0;display:grid;grid-template-columns:1fr 1fr}.split>.canvas-host{position:relative;border-right:1px solid var(--line)}.rail{position:absolute;top:12px;bottom:12px;z-index:4;display:flex;flex-direction:column;justify-content:space-between;gap:8px;pointer-events:none}.rail-left{left:12px;align-items:flex-start}.rail-right{right:12px;align-items:flex-end}.rail-top,.rail-bottom{display:flex;flex-direction:column;gap:8px;min-height:0}.rail-left>*{align-items:flex-start}.rail-right>*{align-items:flex-end}.rail-top{flex:0 1 auto;overflow:hidden}.rail-bottom{flex:none}.rail,.rail-top,.rail-bottom{pointer-events:none}.rail *{pointer-events:auto}.overlay-bl{position:absolute;left:12px;bottom:12px;z-index:4}.control-panel{width:286px;max-height:100%;animation:card-in var(--slow) var(--ease);display:flex;flex-direction:column;background:var(--surface-card);border:1px solid var(--line);border-radius:var(--radius-card);backdrop-filter:blur(var(--blur));box-shadow:var(--shadow-3);overflow:hidden}.control-panel-collapsed{width:auto;padding:4px}.panel-head{justify-content:space-between;display:flex;align-items:center;gap:8px;padding:8px 11px;border-bottom:1px solid var(--line);font-size:var(--text-xs);letter-spacing:.5px;text-transform:uppercase;color:var(--muted);flex:none}.row-list{list-style:none;margin:0;padding:5px;display:flex;flex-direction:column;gap:3px;overflow-y:auto;overscroll-behavior:contain;scroll-behavior:smooth}.row-list li{background:var(--panel-3);border-radius:var(--radius-sm);border:1px solid transparent;transition:background var(--fast) var(--ease),border-color var(--fast) var(--ease)}.row-list li:hover:not(.row-expanded){background:var(--surface-hover)}.row-expanded{background:var(--surface-open);border-color:rgba(var(--accent-rgb),.5)}.row-expanded>.row-head{position:relative;background:linear-gradient(90deg,rgba(var(--accent-rgb),.22),rgba(var(--accent-rgb),.05));border-radius:var(--radius-sm) var(--radius-sm) 0 0}.row-expanded>.row-head:before{content:"";position:absolute;left:0;top:6px;bottom:6px;width:3px;border-radius:0 2px 2px 0;background:var(--accent)}.row-expanded .row-label{color:var(--text-accent)}.row-expanded .row-chevron{color:var(--accent)}.row-off{opacity:var(--dim)}.row-off:hover{opacity:var(--dim-hover)}.row-spacer{width:var(--check);flex:none}.row-head{display:flex;align-items:center;gap:9px;padding:0 10px 0 11px;min-height:var(--row-min)}.row-open{flex:1;display:flex;align-items:center;gap:8px;min-width:0;background:none;border:none;color:inherit;font:inherit;font-weight:600;padding:9px 0;cursor:pointer;text-align:left}.row-label{flex:none}.row-status{flex:1;display:flex;align-items:center;justify-content:flex-end;gap:4px;font-weight:400;font-size:var(--text-xs);color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;transition:color var(--fast) var(--ease)}.row-status.tone-warn{color:var(--warn)}.row-chevron{flex:none;display:grid;place-items:center;color:var(--muted);transition:transform var(--med) var(--ease),color var(--fast) var(--ease)}.row-chevron-open{transform:rotate(90deg);color:var(--text)}.row-list li:hover .row-chevron{color:var(--text)}.row-body{display:grid;grid-template-rows:0fr;transition:grid-template-rows var(--slow) var(--ease)}.row-body-open{grid-template-rows:1fr}.row-body-inner{overflow:hidden;min-height:0}.row-body-inner>*{opacity:0;transition:opacity var(--med) var(--ease) 60ms}.row-body-open .row-body-inner>*{opacity:1}.page-body{padding:10px 11px 12px;display:flex;flex-direction:column;gap:9px}.seg{display:flex;background:var(--panel-2);border:1px solid var(--line);border-radius:var(--radius-sm);overflow:hidden}.seg button{flex:1;min-height:var(--btn-h);background:none;border:none;border-right:1px solid var(--line);color:var(--muted);font:inherit;font-size:var(--text-sm);font-weight:600;cursor:pointer;padding:0 6px;transition:background var(--fast) var(--ease),color var(--fast) var(--ease)}.seg button:last-child{border-right:none}.seg button:hover:not([aria-pressed=true]){background:var(--panel-3);color:var(--text)}.seg button[aria-pressed=true]{background:var(--accent);color:var(--on-accent)}.floating-card{width:286px;animation:card-in-up var(--slow) var(--ease);background:var(--surface-card);border:1px solid var(--line);border-radius:var(--radius-card);backdrop-filter:blur(var(--blur));box-shadow:var(--shadow-3);padding:9px 11px 11px;display:flex;flex-direction:column;gap:7px}.floating-card-head{display:flex;align-items:center;justify-content:space-between;font-size:var(--text-xs);letter-spacing:.5px;text-transform:uppercase;color:var(--muted)}.cell-card .scroll-y{max-height:34dvh;overflow-y:auto;overscroll-behavior:contain}.panel{background:var(--panel-2);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}.panel>summary{cursor:pointer;padding:9px 11px;font-weight:600;user-select:none;display:flex;justify-content:space-between;align-items:center;background:var(--panel-3);list-style:none;gap:8px}.panel>summary::-webkit-details-marker{display:none}.panel>summary:after{content:"›";color:var(--muted);font-size:var(--text-xl);line-height:1;transition:transform .15s ease}.panel[open]>summary:after{transform:rotate(90deg)}.panel>summary:hover{background:var(--surface-hover)}.channel-row{display:flex;flex-direction:column;gap:6px;padding:8px 9px;background:var(--panel);border:1px solid var(--line-soft);border-radius:var(--radius-sm)}.channel-off{opacity:var(--dim)}.channel-head{display:flex;align-items:center;gap:7px}.channel-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:500}.channel-extra{display:flex;flex-direction:column;gap:6px;padding-top:4px;border-top:1px solid var(--line-soft)}.sub-block{display:flex;flex-direction:column;gap:6px;padding-left:8px;border-left:1px solid var(--line-soft)}.icon-btn{flex:none;width:var(--icon-btn);height:var(--icon-btn);display:grid;place-items:center;background:transparent;border:1px solid transparent;border-radius:4px;color:var(--muted);font-size:var(--text-sm);line-height:1;cursor:pointer;padding:0}.icon-btn{transition:background var(--fast) var(--ease),color var(--fast) var(--ease),transform var(--fast) var(--ease)}.icon-btn:hover:not(:disabled){background:var(--panel-3);color:var(--text)}.icon-btn:active:not(:disabled){transform:scale(.9)}.icon-btn-active{background:var(--accent);color:var(--on-accent)}.icon-btn:disabled{opacity:var(--dim-disabled);cursor:not-allowed}.color-dot{flex:none;width:var(--check);height:var(--check);padding:0;border:1px solid var(--hairline-strong);border-radius:50%;background:none;cursor:pointer;overflow:hidden}.color-dot::-webkit-color-swatch-wrapper{padding:0}.color-dot::-webkit-color-swatch{border:none;border-radius:50%}.range-row{display:flex;align-items:center;gap:7px}.range-row input.range-num{width:62px;flex:none;padding:3px 5px;text-align:center;font-variant-numeric:tabular-nums;font-size:var(--text-xs)}.range-row input.range-num::-webkit-outer-spin-button,.range-row input.range-num::-webkit-inner-spin-button{appearance:none;margin:0}.range-dual{position:relative;flex:1;height:var(--range-h);min-width:40px}.range-track,.range-fill{position:absolute;top:50%;height:3px;border-radius:2px;transform:translateY(-50%);pointer-events:none}.range-track{left:0;right:0;background:var(--line)}.range-fill{background:var(--accent)}.range-dual input[type=range]{position:absolute;inset:0;width:100%;height:var(--range-h);margin:0;padding:0;background:none;appearance:none;pointer-events:none}.range-dual input[type=range]::-webkit-slider-thumb{appearance:none;pointer-events:auto;width:var(--thumb);height:var(--thumb);border-radius:50%;background:var(--accent);border:2px solid var(--bg);cursor:grab}.range-dual input[type=range]::-moz-range-thumb{pointer-events:auto;width:calc(var(--thumb) - 2px);height:11px;border-radius:50%;background:var(--accent);border:2px solid var(--bg);cursor:grab}.range-dual input[type=range]:focus-visible::-webkit-slider-thumb{outline:2px solid var(--text);outline-offset:1px}.inline-row{display:flex;align-items:center;gap:8px}.chip-list{list-style:none;display:flex;flex-wrap:wrap;gap:5px;margin:0;padding:0}.chip-list li{display:flex;align-items:center;gap:5px;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius-pill);padding:2px 7px 2px 6px;font-size:var(--text-xs);font-family:var(--font-mono)}.swatch-dot{width:8px;height:8px;border-radius:50%;display:inline-block;flex:none}.panel-body{padding:10px 11px 11px;display:flex;flex-direction:column;gap:9px}.layer-group{display:flex;flex-direction:column;gap:6px;padding-top:6px;border-top:1px solid var(--line)}.layer-group:first-child{border-top:none;padding-top:0}.field,.number-input{display:flex;flex-direction:column;gap:3px}.field-label,.number-input>span{color:var(--muted);font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.4px}.field-hint{color:var(--muted);font-size:var(--text-xs)}input,select,textarea,button{transition:border-color var(--fast) var(--ease)}input[type=text],input[type=search],input[type=number],select,textarea{background:var(--surface-sunken);border:1px solid var(--line);color:var(--text);border-radius:var(--radius-sm);padding:6px 8px;font:inherit;width:100%;min-width:0}input:hover:not(:disabled),select:hover,textarea:hover{border-color:var(--line-strong)}input[type=checkbox]{width:var(--check);height:var(--check);border-radius:3px}textarea{resize:vertical;font-family:var(--font-mono);font-size:var(--text-sm)}input[type=range]{width:100%;accent-color:var(--accent)}input[type=checkbox]{accent-color:var(--accent)}.slider label{display:flex;justify-content:space-between;color:var(--muted);font-size:var(--text-xs)}.slider output{color:var(--text);font-variant-numeric:tabular-nums}.toggle{display:flex;align-items:center;gap:6px;cursor:pointer}.row{display:flex;gap:6px;align-items:flex-end}.row.wrap{flex-wrap:wrap}.btn{background:var(--panel-3);border:1px solid var(--line);color:var(--text);border-radius:var(--radius-sm);display:inline-flex;align-items:center;justify-content:center;min-height:var(--btn-h);padding:5px 10px;cursor:pointer;font:inherit;white-space:nowrap}.btn{transition:border-color var(--fast) var(--ease),background var(--fast) var(--ease),transform var(--fast) var(--ease)}.btn:hover:not(:disabled){border-color:var(--accent);background:var(--surface-hover)}.btn:active:not(:disabled){transform:scale(.97)}.btn:disabled{opacity:var(--dim-disabled);cursor:not-allowed}.btn-primary{background:var(--accent);border-color:var(--accent);color:var(--on-accent);font-weight:600}.btn-danger{border-color:var(--danger);color:var(--danger)}.btn-ghost{background:transparent;color:var(--muted)}.chip{background:var(--panel-2);border:1px solid var(--line);color:var(--muted);border-radius:var(--radius-pill);display:inline-flex;align-items:center;justify-content:center;min-height:var(--btn-h);padding:4px 11px;cursor:pointer;font:inherit;font-size:var(--text-sm)}.chip{transition:background var(--fast) var(--ease),border-color var(--fast) var(--ease),color var(--fast) var(--ease)}.chip-active{background:var(--accent);border-color:var(--accent);color:var(--on-accent);font-weight:600}.chip:disabled{opacity:var(--dim-disabled);cursor:not-allowed}.link{background:none;border:none;color:var(--accent);cursor:pointer;font:inherit;padding:0;text-decoration:underline}.mode-grid{display:flex;gap:5px;flex-wrap:wrap}.kv{margin:0;display:flex;flex-direction:column;gap:2px}.kv-row,.kv>dt{display:contents}.kv .kv-row{display:grid;grid-template-columns:44% 1fr;gap:6px}.kv dt{color:var(--muted)}.kv dd{margin:0;word-break:break-word}.kv:not(:has(.kv-row)){display:grid;grid-template-columns:44% 1fr;gap:2px 6px}.note,.muted{color:var(--muted);font-size:var(--text-xs);margin:2px 0 0}.empty-state{display:flex;flex-direction:column;align-items:flex-start;gap:8px;padding:6px 0 2px}.empty-state p{margin:0;color:var(--muted);font-size:var(--text-md);line-height:1.45}.ok{color:var(--ok)}.warn,.warn-text{color:var(--warn)}.error-text{color:var(--danger)}.warnings{margin:6px 0 0;padding-left:16px;color:var(--warn);font-size:var(--text-xs)}.view-list{display:flex;flex-direction:column;gap:6px;margin-top:10px}.view-heading{margin:4px 0 0;font-size:var(--text-xs);font-weight:600;color:var(--muted);text-transform:none}.view-rows{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px}.view-row{display:flex;flex-direction:column;gap:2px;padding:4px 0;border-bottom:1px solid var(--hairline)}.view-open{display:flex;gap:8px;align-items:center;background:none;border:0;padding:2px;width:100%;color:inherit;font:inherit;text-align:left;cursor:pointer;border-radius:6px}.view-open:hover{background:var(--panel-3)}.view-text{display:flex;flex-direction:column;gap:1px;min-width:0}.view-thumb{flex:none;width:64px;height:48px;border-radius:4px;object-fit:cover;background:var(--panel-3);border:1px solid var(--hairline)}.view-thumb-empty{display:block;background:linear-gradient(135deg,transparent 47%,var(--hairline) 47%,var(--hairline) 53%,transparent 53%),var(--panel-3)}.view-name{font-weight:600;word-break:break-word}.view-meta{color:var(--muted);font-size:var(--text-xs);word-break:break-all}.view-actions{display:flex;flex-wrap:wrap;gap:4px;align-items:center}.view-rename{display:flex;gap:4px;align-items:center}.view-rename input{flex:1;min-width:0}.view-note{margin:2px 0 0;color:var(--muted);font-size:var(--text-xs)}.link-btn{align-self:flex-start;background:none;border:0;padding:2px 0;color:var(--muted);font:inherit;font-size:var(--text-xs);text-decoration:underline;cursor:pointer}.link-btn:hover{color:var(--text)}.gene-list,.transcript-legend{list-style:none;margin:0;padding:0;max-height:240px;overflow-y:auto;overscroll-behavior:contain}.gene-list li,.transcript-legend li{display:flex;align-items:center;gap:6px;padding:2px 0;border-bottom:1px solid var(--hairline)}.gene-name{flex:1;font-family:var(--font-mono)}.gene-list-key{margin:0;color:var(--muted);font-size:var(--text-xs);letter-spacing:.03em;text-transform:uppercase;text-align:right}.gene-stat{color:var(--muted);font-size:var(--text-xs);font-variant-numeric:tabular-nums}.swatch{width:11px;height:11px;border-radius:2px;display:inline-block;flex:none}.legend{animation:card-in var(--slow) var(--ease);max-width:240px;max-height:calc(100dvh - 300px);overflow-y:auto;background:var(--surface-card);border:1px solid var(--line);border-radius:var(--radius-card);padding:8px 10px;backdrop-filter:blur(var(--blur));box-shadow:var(--shadow-3)}.legend-inline{animation:none;max-width:none;max-height:none;overflow:visible;background:none;border:none;border-radius:0;padding:0;backdrop-filter:none;box-shadow:none}.legend-inline .legend-label{overflow:visible;white-space:normal;overflow-wrap:anywhere}.legend-inline .legend-item{padding:4px 0}.legend-head{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:4px;padding-bottom:5px;border-bottom:1px solid var(--hairline)}.legend ul{list-style:none;margin:0;padding:0}.legend-item{transition:opacity var(--fast) var(--ease)}.legend-item:hover{opacity:.75}.legend li.muted .legend-label{transition:opacity var(--fast) var(--ease)}.legend-item{display:flex;align-items:center;gap:6px;flex:1;min-width:0;min-height:var(--legend-row);background:none;border:none;color:inherit;cursor:pointer;padding:1px 0;font:inherit;text-align:left}.legend li{display:flex;align-items:center;gap:var(--space-3);min-height:var(--legend-row);padding:var(--space-1) 0;border-bottom:1px solid var(--hairline)}.legend li:last-child{border-bottom:none}.legend-only{flex:none;background:none;border:1px solid transparent;border-radius:4px;color:var(--muted);font:inherit;font-size:var(--text-2xs);letter-spacing:.04em;text-transform:uppercase;cursor:pointer;padding:2px 5px}.legend-only:hover{background:var(--panel-3);color:var(--text)}.legend-only[aria-pressed=true]{border-color:var(--accent);color:var(--accent)}.legend-label{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.legend-count{flex:none;min-width:4ch;text-align:right;padding-left:var(--space-2);color:var(--muted);font-variant-numeric:tabular-nums;font-size:var(--text-xs)}.legend li.muted .legend-label{text-decoration:line-through;opacity:var(--dim)}.colorbar-row{display:flex;align-items:center;gap:4px;margin:6px 0 2px}.colorbar{flex:1;height:11px;border-radius:2px;border:1px solid var(--line)}.colorbar-scale{display:flex;justify-content:space-between;font-size:var(--text-xs);color:var(--muted);font-variant-numeric:tabular-nums}.clip-marker{color:var(--warn);font-size:var(--text-2xs)}.legend-missing{display:flex;align-items:center;gap:5px;margin-top:4px;font-size:var(--text-xs);color:var(--muted)}.scale-dock{position:absolute;right:12px;bottom:12px;z-index:4;pointer-events:none}.scale-bar{display:flex;flex-direction:column;align-items:flex-end;gap:3px;padding:5px 9px;background:var(--surface-readout);border-radius:var(--radius-sm);font-variant-numeric:tabular-nums;font-size:var(--text-xs);backdrop-filter:blur(var(--blur-sm))}.scale-bar-line{height:2px;background:var(--text);border-radius:1px;min-width:40px}.minimap-dock{position:absolute;left:12px;bottom:12px;z-index:4;display:flex;flex-direction:column;align-items:flex-start;gap:6px}.minimap{animation:card-in-up var(--slow) var(--ease);transition:padding var(--med) var(--ease);background:var(--surface-dock);border:1px solid var(--line);border-radius:var(--radius);padding:5px;backdrop-filter:blur(var(--blur));box-shadow:var(--shadow-3)}.minimap-head{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:1px 4px 4px;font-size:var(--text-2xs);letter-spacing:.5px;text-transform:uppercase;color:var(--muted)}.minimap-canvas{display:block;border-radius:var(--radius-sm);cursor:crosshair;background:var(--stage-bg)}.minimap-collapsed{padding:3px 6px}.readout-pill{display:flex;align-items:baseline;gap:9px;padding:4px 10px;background:var(--surface-dock);border:1px solid var(--line);border-radius:var(--radius-sm);font-variant-numeric:tabular-nums;font-size:var(--text-xs);backdrop-filter:blur(var(--blur))}.readout-cell{color:var(--accent);font-weight:600}.floating-control{position:absolute;right:12px;bottom:12px;z-index:3;display:flex;align-items:center;gap:6px;background:var(--surface-readout);border:1px solid var(--line);border-radius:var(--radius);padding:4px 8px;font-size:var(--text-xs);color:var(--muted)}.floating-control input{width:90px}.overlay{animation:card-in var(--med) var(--ease);position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;background:var(--overlay-bg);z-index:5;padding:24px;text-align:center}.overlay.error{align-items:flex-start;text-align:left;overflow-y:auto}.overlay pre{white-space:pre-wrap;color:var(--danger);font-size:var(--text-sm);max-width:720px}.overlay .hint{color:var(--muted);max-width:720px}.overlay-progress{width:220px;height:4px}.overlay-sub{margin:0;color:var(--muted);font-size:var(--text-xs);max-width:520px;word-break:break-all}.welcome-overlay{align-items:center}.welcome{width:min(560px,100%);max-height:100%;overflow-y:auto;display:flex;flex-direction:column;gap:14px;text-align:left;background:var(--surface-card);border:1px solid var(--line);border-radius:var(--radius-lg);padding:22px 24px;box-shadow:var(--shadow-4)}.welcome h1{margin:0;font-size:var(--text-xl)}.welcome-lede{margin:0;color:var(--muted);line-height:1.55}.welcome-actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.welcome-hints{margin:0;padding-left:16px;color:var(--muted);font-size:var(--text-xs);line-height:1.6}.welcome code{background:var(--panel-3);border-radius:3px;padding:0 4px;font-size:var(--text-xs);word-break:break-all}.layer-notice{position:absolute;left:0;right:0;bottom:14px;margin-inline:auto;width:fit-content;z-index:5;display:flex;flex-direction:column;gap:6px;max-width:min(560px,60vw);pointer-events:none}.layer-notice-row{display:flex;align-items:flex-start;gap:9px;padding:8px 9px 8px 11px;background:var(--surface-card);border:1px solid rgba(var(--warn-rgb),.4);border-left:3px solid var(--warn);border-radius:var(--radius-sm);backdrop-filter:blur(var(--blur));box-shadow:var(--shadow-2);font-size:var(--text-xs);pointer-events:auto;animation:card-in-up var(--slow) var(--ease)}.layer-notice-icon{color:var(--warn);display:grid;place-items:center;padding-top:1px}.layer-notice-text{flex:1;display:flex;flex-direction:column;gap:2px}.layer-notice-hint{color:var(--muted);font-size:var(--text-xs)}.canvas-error{position:absolute;left:12px;bottom:46px;z-index:5;display:flex;align-items:flex-start;gap:var(--space-3);color:var(--danger);background:var(--surface-card);border:1px solid var(--line);padding:var(--space-3) var(--space-3) var(--space-3) var(--space-5);border-radius:var(--radius);box-shadow:var(--shadow-2);backdrop-filter:blur(var(--blur));max-width:60%;font-size:var(--text-xs)}.spinner{width:26px;height:26px;border:3px solid var(--line);border-top-color:var(--accent);border-radius:50%;animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@keyframes card-in{0%{opacity:0;transform:translateY(-6px) scale(.985)}to{opacity:1;transform:none}}@keyframes card-in-up{0%{opacity:0;transform:translateY(8px) scale(.985)}to{opacity:1;transform:none}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}}.progress{display:flex;align-items:center;gap:8px;font-size:var(--text-xs);color:var(--muted)}.progress progress{flex:1}.selection-count{margin:0;font-size:var(--text-lg)}.badge{background:var(--accent);color:var(--on-accent);border-radius:3px;padding:0 5px;margin-left:6px;font-size:var(--text-2xs);font-weight:700}.cell-id{margin:0 0 6px;word-break:break-all}.method-note{font-size:var(--text-xs);color:var(--muted)}.method-note summary{cursor:pointer;color:var(--accent)}.method-note p{margin:4px 0}.panel[data-testid=diagnostics]{width:320px;max-height:62dvh;overflow-y:auto;overscroll-behavior:contain;background:var(--surface-card);border-radius:var(--radius-card);backdrop-filter:blur(var(--blur));box-shadow:var(--shadow-3)}.diag-table{width:100%;border-collapse:collapse;font-size:var(--text-xs);margin-top:6px}.diag-table th,.diag-table td{text-align:left;padding:2px 4px;border-bottom:1px solid var(--line)}.diag-table td:not(:first-child){text-align:right;font-variant-numeric:tabular-nums}.dataset-form{display:flex;flex-direction:column;gap:6px}@media (max-width: 1100px){.control-panel,.floating-card{width:min(268px,46vw)}.legend:not(.legend-inline){max-width:min(200px,40vw)}.brand{display:none}.dataset-title{font-size:var(--text-xs)}.minimap-dock{transform:scale(.85);transform-origin:bottom left}}[data-pointer=coarse]{--btn-w: 44px;--btn-h: 44px;--icon-btn: 44px;--check: 22px;--thumb: 26px;--range-h: 34px;--fab: 56px;--row-min: 52px;--legend-row: 44px}[data-pointer=coarse] .toggle{min-height:var(--btn-h)}[data-pointer=coarse] input,[data-pointer=coarse] select,[data-pointer=coarse] textarea{font-size:16px}[data-pointer=coarse] button,[data-pointer=coarse] label,[data-pointer=coarse] summary{-webkit-tap-highlight-color:transparent;touch-action:manipulation}[data-pointer=coarse] .view-open{min-height:var(--row-min)}[data-pointer=coarse] .link-btn{min-height:var(--btn-h)}[data-pointer=coarse] .toolbar{gap:4px}[data-pointer=coarse] .legend-item:hover{opacity:1}[data-pointer=coarse] .legend li{border-radius:var(--radius-sm);padding:var(--space-3) 2px}[data-pointer=coarse] .legend li:active{background:var(--panel-3)}[data-pointer=coarse] .legend-only{border-color:var(--line);padding:0 11px;min-height:var(--btn-h)}[data-pointer=coarse] .range-dual input[type=range]{height:var(--range-h)}[data-pointer=coarse] .row-list,[data-pointer=coarse] .gene-list,[data-pointer=coarse] .transcript-legend,[data-pointer=coarse] .cell-card .scroll-y{-webkit-overflow-scrolling:touch}[data-layout=compact] .toolbar-compact{gap:6px;padding:0 8px;padding-top:env(safe-area-inset-top,0px);height:calc(46px + env(safe-area-inset-top,0px))}[data-layout=compact] .toolbar-compact .dataset-title{display:block;font-size:var(--text-sm)}[data-layout=compact] .stage{--sheet-visible: 80px}[data-layout=compact] .app{grid-template-rows:calc(46px + env(safe-area-inset-top,0px)) minmax(0,1fr)}.menu-anchor{position:relative;flex:none}.menu{position:absolute;top:calc(100% + 6px);right:0;z-index:30;min-width:220px;padding:5px;display:flex;flex-direction:column;gap:2px;background:var(--panel-2);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-3)}.menu button{display:flex;align-items:center;gap:11px;min-height:46px;padding:0 10px;background:none;border:none;border-radius:var(--radius-sm);color:var(--text);font:inherit;font-size:var(--text-md);text-align:left;cursor:pointer}.menu button:active:not(:disabled){background:var(--panel-3)}.menu button:disabled{opacity:var(--dim-disabled)}[data-layout=compact] .chip-row{position:absolute;top:10px;left:10px;right:10px;z-index:4;display:flex;align-items:flex-start;justify-content:space-between;gap:8px;pointer-events:none}[data-layout=compact] .chip-row>*{pointer-events:auto}[data-layout=compact] .chip-row .scale-bar{pointer-events:none}.legend-chip{display:inline-flex;align-items:center;gap:7px;max-width:62%;min-height:36px;padding:6px 12px;background:var(--surface-sheet);border:1px solid var(--line);border-radius:var(--radius-pill);color:var(--text);font:inherit;font-size:var(--text-sm);font-weight:500;cursor:pointer}.legend-chip-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.legend-chip-count{flex:none;color:var(--muted);font-size:var(--text-xs);font-variant-numeric:tabular-nums}[data-layout=compact] .fab-cluster{position:absolute;right:12px;bottom:calc(var(--sheet-visible) + 14px);z-index:5;display:flex;flex-direction:column;align-items:flex-end;gap:10px}.fab{width:var(--fab, 56px);height:var(--fab, 56px);display:grid;place-items:center;border-radius:50%;background:var(--surface-float);border:1px solid var(--line);color:var(--text);box-shadow:var(--shadow-2);cursor:pointer;transition:transform var(--fast) var(--ease),background var(--fast) var(--ease)}.fab:active{transform:scale(.93)}.fab-armed{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}.fab-menu{display:flex;flex-direction:column;align-items:flex-end;gap:8px}.fab-opt{display:inline-flex;align-items:center;gap:9px;padding:6px 7px 6px 14px;border-radius:var(--radius-pill);background:var(--surface-float);border:1px solid var(--line);color:var(--text);font:inherit;font-size:var(--text-md);font-weight:500;white-space:nowrap;cursor:pointer;box-shadow:var(--shadow-1)}.fab-opt-icon{display:grid;place-items:center;width:32px;height:32px;border-radius:50%;background:var(--panel-3);color:var(--muted)}.fab-opt[aria-pressed=true] .fab-opt-icon{background:var(--accent);color:var(--on-accent)}.mode-pill{display:inline-flex;align-items:center;gap:8px;height:46px;padding:0 15px 0 10px;border-radius:var(--radius-pill);background:var(--surface-float);border:1px solid var(--line);color:var(--text);font:inherit;font-size:var(--text-md);font-weight:600;white-space:nowrap;cursor:pointer;box-shadow:var(--shadow-2)}.mode-glyph{display:grid;place-items:center;width:26px;height:26px;border-radius:50%;background:var(--panel-3);color:var(--muted);font-family:var(--font-mono)}.mode-pill[data-mode=add] .mode-glyph{background:var(--ok);color:var(--stage-bg)}.mode-pill[data-mode=subtract] .mode-glyph{background:var(--warn);color:var(--stage-bg)}[data-layout=compact] .scrim{appearance:none;border:none;padding:0;cursor:default;position:absolute;inset:0;z-index:6;background:var(--scrim);animation:scrim-in var(--med) var(--ease)}@keyframes scrim-in{0%{opacity:0}to{opacity:1}}[data-layout=compact] .sheet{position:absolute;left:0;right:0;bottom:0;height:92%;z-index:7;display:flex;flex-direction:column;background:var(--surface-sheet);border-top:1px solid var(--line);border-radius:16px 16px 0 0;box-shadow:var(--shadow-sheet);transition:transform var(--slow) var(--ease);touch-action:none}[data-layout=compact] .sheet-dragging{transition:none}.sheet-grab{flex:none;min-height:24px;padding:10px 0 6px;display:grid;place-items:center;cursor:grab;touch-action:none}.sheet-grab:before{content:"";width:38px;height:4px;border-radius:2px;background:var(--line-strong)}.sheet-nav{flex:none;padding:0 14px 10px;border-bottom:1px solid var(--line-soft)}.section-chips{display:flex;flex-wrap:nowrap;gap:6px}.section-chip{flex:none;display:inline-flex;align-items:center;gap:6px;min-height:var(--btn-h);padding:0 11px;border-radius:var(--radius-pill);background:var(--panel-3);border:1px solid var(--line);color:var(--text);font:inherit;font-size:var(--text-sm);font-weight:500;white-space:nowrap;cursor:pointer;transition:background var(--fast) var(--ease),border-color var(--fast) var(--ease),opacity var(--fast) var(--ease)}.section-chip-value{color:var(--muted);font-size:var(--text-xs);font-variant-numeric:tabular-nums;max-width:88px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.section-chip[data-tone=off]{opacity:var(--dim)}.section-chip[data-tone=empty]{border-color:rgba(var(--warn-rgb),.55)}.section-chip[data-tone=empty] .section-chip-value{color:var(--warn)}.section-chip[aria-expanded=true]{opacity:1;background:var(--accent);border-color:var(--accent);color:var(--on-accent);font-weight:600}.section-chip[aria-expanded=true] .section-chip-value{color:var(--on-accent-soft)}.section-chip:active{transform:scale(.97)}.sheet-head{flex:none;display:flex;align-items:center;gap:6px;padding:2px 10px 8px;border-bottom:1px solid var(--line-soft)}.sheet-head h2{margin:0;font-size:var(--text-lg);font-weight:600;letter-spacing:-.01em}.sheet-back{flex:none}.sheet-scroll{flex:none;min-height:0;overflow-y:auto;overscroll-behavior:contain;touch-action:pan-y;-webkit-overflow-scrolling:touch;padding-bottom:calc(18px + env(safe-area-inset-bottom,0px))}.control-panel-sheet{width:auto;max-height:none;background:none;border:none;border-radius:0;box-shadow:none;backdrop-filter:none;animation:none;overflow:visible}.control-panel-sheet .row-list{padding:6px;gap:4px;overflow:visible}.control-panel-sheet .row-list li{background:var(--panel-3)}.sheet-page{display:block}[data-layout=compact] .control-panel-sheet{--sheet-head-h: 0px}[data-layout=compact] .gene-list,[data-layout=compact] .transcript-legend{max-height:none;overflow:visible}[data-layout=compact] .gene-search-row{position:sticky;top:var(--sheet-head-h, 0px);z-index:1;margin:-10px -11px 0;padding:10px 11px 8px;background:var(--panel);border-bottom:1px solid var(--line-soft);display:flex;flex-direction:column;gap:6px}.page-switch{display:flex;align-items:center;gap:10px;min-height:var(--btn-h);padding:2px 11px 8px;border-bottom:1px solid var(--line-soft)}.page-switch .toggle{flex:1;min-width:0;font-size:var(--text-md);font-weight:600}.page-switch .row-status{flex:none}[data-layout=compact] .page-switch span:focus{outline:none}.more-row{display:flex;align-items:center;gap:10px;width:100%;min-height:var(--btn-h);padding:0 4px 0 11px;background:var(--panel-3);border:1px solid var(--line);border-radius:var(--radius-sm);color:var(--text);font:inherit;font-size:var(--text-md);text-align:left;cursor:pointer}.more-row-label{flex:none;font-weight:600}.more-row-status{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:right;color:var(--muted);font-size:var(--text-sm)}.more-row[data-tone=off]{opacity:var(--dim)}.more-row[data-tone=empty]{border-color:rgba(var(--warn-rgb),.55)}.more-row:active{background:var(--panel-2)}.cell-sheet{display:flex;flex-direction:column;gap:7px;padding:10px 11px 12px}.cell-sheet .scroll-y{max-height:none}[data-layout=compact] .split{grid-template-columns:1fr;grid-template-rows:1fr 1fr}[data-layout=compact] .split>.canvas-host{border-right:none;border-bottom:1px solid var(--line)}[data-layout=compact] .minimap-dock,[data-layout=compact] .canvas-readout{position:absolute;left:12px;right:auto;transform:none;bottom:calc(var(--sheet-visible) + 14px);z-index:5;max-width:min(62%,260px)}[data-layout=compact] .minimap-dock{width:min(62%,260px)}[data-layout=compact] .stage[data-canvas-left] .minimap-dock{display:none}[data-layout=compact] .fab-cluster{max-width:calc(38% - 30px)}.cell-readout{display:flex;align-items:center;gap:8px;max-width:100%;min-height:var(--btn-h);padding:0 13px;background:var(--surface-sheet);border:1px solid var(--line);border-radius:var(--radius-pill);color:var(--text);font:inherit;font-size:var(--text-sm);box-shadow:var(--shadow-2);cursor:pointer;text-align:left}.cell-readout:active{background:var(--panel-3)}.cell-readout-id{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted);font-variant-numeric:tabular-nums}.cell-readout-value{flex:none;font-weight:600}[data-layout=compact] .minimap-dock .readout-pill,[data-layout=compact] .minimap-collapsed{display:none}.menu-note{margin-left:auto;color:var(--muted);font-size:var(--text-xs)}[data-layout=compact] .layer-notice{bottom:calc(var(--sheet-visible) + 24px + var(--fab));max-width:calc(100% - 24px)}[data-layout=compact] .layer-notice-row{max-height:40vh;overflow-y:auto}[data-layout=compact] .welcome{width:min(560px,100%)}[data-layout=compact] .canvas-error{max-width:calc(100% - 24px)}[data-layout=compact] .row-body{transition:none}@media (prefers-reduced-transparency: reduce){.control-panel,.floating-card,.sheet{backdrop-filter:none}}[data-layout=compact] .sheet-head h2:focus{outline:none}
