:root{color:#242227;background:#f8f7f2;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-synthesis:none;line-height:1.45;--ink: #242227;--muted: #6d6871;--line: #dcd8cf;--paper: #f8f7f2;--panel: #fffefa;--accent: #3a5768;--y-axis-width: 38px;--x-axis-height: 34px;--x-label-height: 22px;--y-label-width: 22px;--feature-track-size: 28px}*{box-sizing:border-box}body{margin:0;min-height:100dvh;background:radial-gradient(circle at 15% -10%,rgba(119,160,166,.12),transparent 34rem),var(--paper)}button,select,input{font:inherit}button,select{color:inherit}[hidden]{display:none!important}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}:focus-visible{outline:2px solid #315f78;outline-offset:2px}.checkbox-control{grid-template-columns:auto 1fr;align-items:start}.checkbox-control input{margin-top:4px}.checkbox-control small{grid-column:2}.scientific-provenance{display:block;margin-top:10px;padding-top:9px;border-top:1px solid var(--line);color:#77717a;font-size:10px;line-height:1.35;overflow-wrap:anywhere}#app{width:min(1900px,calc(100% - 12px));margin:0 auto;padding:6px 0}h1{margin:0;font-family:Georgia,Times New Roman,serif;font-size:31px;font-weight:500;letter-spacing:-.035em}.landing{display:grid;min-height:calc(100vh - 40px);place-items:center}.landing-content{display:grid;gap:22px;justify-items:center}.drop-zone-frame{width:min(660px,75vw);display:grid}.drop-zone{width:100%;min-height:310px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;border:1px solid var(--line);border-radius:22px;color:inherit;background:#fffefac7;box-shadow:0 22px 60px #322f2b12;cursor:pointer;transition:border-color .15s ease,transform .15s ease,background .15s ease}.drop-zone:hover,.drop-zone:focus-visible,.drop-zone.is-dragging{border-color:#7796a0;background:#fffefa;transform:translateY(-2px);outline:none}.drop-title{font-family:Georgia,Times New Roman,serif;font-size:28px;letter-spacing:-.025em}.drop-detail{color:var(--muted);font-size:14px}.caveat-note,.privacy-note{color:var(--muted);font-size:12px}.caveat-note{margin-top:26px}.app-version{color:#969099;font-size:9px;font-variant-numeric:tabular-nums}.landing-version{justify-self:end;padding:4px 3px 0 0}.workspace{display:grid;grid-template-columns:250px minmax(0,1fr);gap:10px;align-items:start}.controls{position:sticky;top:6px;display:flex;flex-direction:column;gap:12px;padding:16px;border:1px solid var(--line);border-radius:14px;background:#fffefad1}.control-header{display:flex;align-items:center;justify-content:space-between;gap:10px;padding-bottom:3px}.control-header h1{font-size:24px;white-space:nowrap}.control-status{display:flex;min-height:24px;align-items:center;justify-content:space-between;gap:7px;padding-bottom:8px;border-bottom:1px solid var(--line)}.controls label{display:grid;gap:6px;font-size:12px;color:var(--muted)}.controls label>span{display:flex;justify-content:space-between;gap:8px}.controls small{color:#87818a;font-size:10px;line-height:1.3}select,input[type=number]{width:100%;min-height:36px;border:1px solid var(--line);border-radius:8px;padding:6px 9px;background:var(--panel)}input[type=range]{width:100%;accent-color:var(--accent)}details{border-top:1px solid var(--line);padding-top:12px}summary{cursor:pointer;font-size:12px;color:var(--muted)}details[open]{display:grid;gap:14px}details[open] summary{margin-bottom:4px}.advanced-controls[open]{gap:18px}.advanced-controls .checkbox-option>span{justify-content:flex-start;align-items:center}.advanced-controls .checkbox-option input{width:15px;height:15px;margin:0;accent-color:var(--accent)}.feature-track-controls[open]{gap:12px}.feature-track-control-item{display:grid;gap:3px;margin-bottom:9px}.feature-track-control-item>small{display:block;margin:0;line-height:1.25}.feature-track-control-row{display:flex;align-items:center;gap:8px;color:var(--ink);font-size:12px}.feature-track-control-row strong{min-width:54px;font-size:12px;font-weight:650}.feature-track-control-row label{display:flex;grid-template-columns:none;align-items:center;gap:4px;color:var(--ink)}.feature-track-control-row input{width:15px;height:15px;margin:0;accent-color:var(--accent)}.add-track-button,.track-import-dialog button{border:1px solid var(--line);border-radius:7px;padding:6px 8px;color:var(--ink);background:var(--panel);cursor:pointer;font-size:11px}.add-track-button{width:100%;margin-top:0}.feature-track-add-control{gap:4px}.advanced-controls>label+label{margin-top:10px}.imported-track-list{display:grid;gap:8px}.imported-track-control{display:grid;gap:2px;padding-top:7px;border-top:1px solid rgba(220,216,207,.72)}.imported-track-control-header{display:flex;align-items:center;gap:6px;font-size:11px}.imported-track-control-name{display:block;color:var(--ink);font-size:11px;font-weight:650;line-height:1.25;overflow-wrap:anywhere}.imported-track-control-header label{display:flex;align-items:center;gap:3px;color:var(--ink)}.imported-track-control-header input{width:14px;height:14px;margin:0;accent-color:var(--accent)}.imported-track-control-header input:disabled{opacity:.35}.track-lane-control{display:inline-flex;align-items:center;overflow:hidden;border:1px solid var(--line);border-radius:5px}.track-lane-control button,.track-delete-button{min-width:20px;height:22px;border:0;padding:0 4px;color:var(--ink);background:transparent;cursor:pointer;font-size:10px}.track-lane-control output{min-width:13px;text-align:center;font-size:9px}.track-delete-button{margin-left:auto;color:#8b3844}.segmented-control{display:grid;grid-template-columns:1fr 1fr;margin:0;padding:0;border:0}.segmented-control legend{margin-bottom:6px;color:var(--muted);font-size:12px}.segmented-control button{width:100%;min-width:0;border:1px solid var(--line);padding:7px 5px;background:var(--panel);font-size:12px;cursor:pointer}.segmented-control button:first-of-type{border-radius:8px 0 0 8px}.segmented-control button:last-of-type{border-left:0;border-radius:0 8px 8px 0}.segmented-control button[aria-pressed=true]{color:#fff;background:var(--accent);border-color:var(--accent)}.control-title{color:var(--muted);font-size:12px}.heatmap-control{display:grid;gap:5px}#identity-histogram{display:block;width:100%;height:28px;max-height:28px;border-bottom:1px solid var(--line)}.triple-slider{position:relative;height:18px;border-radius:99px;background:linear-gradient(90deg,var(--paper) 0 25%,#f6ec9d 25%,#e85d39 60%,#310e43 100%)}.triple-slider input[type=range]{position:absolute;inset:-1px 0 auto;height:20px;margin:0;appearance:none;background:transparent;pointer-events:none}.triple-slider input[type=range]::-webkit-slider-runnable-track{height:2px;background:transparent}.triple-slider input[type=range]::-moz-range-track{height:2px;background:transparent}.triple-slider input[type=range]::-webkit-slider-thumb{width:11px;height:17px;margin-top:-7px;appearance:none;border:2px solid #fffefa;border-radius:4px;background:var(--accent);box-shadow:0 0 0 1px #1c1a1d8c;pointer-events:auto;cursor:ew-resize}.triple-slider input[type=range]::-moz-range-thumb{width:9px;height:15px;border:2px solid #fffefa;border-radius:4px;background:var(--accent);box-shadow:0 0 0 1px #1c1a1d8c;pointer-events:auto;cursor:ew-resize}.heatmap-values{display:flex;justify-content:space-between;color:var(--muted);font-size:10px;font-variant-numeric:tabular-nums}.quiet-button{border:1px solid var(--line);border-radius:8px;padding:7px 11px;background:#fffefabf;cursor:pointer;font-size:12px}.quiet-button:hover{border-color:#9c9890}.quiet-button:disabled{cursor:default;opacity:.45}.plot-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:4px}.plot-actions .quiet-button{padding-inline:3px;font-size:10px;white-space:nowrap}.plot-column{--x-track-height: 0px;--y-track-width: 0px;min-width:0}.status-cluster{display:flex;min-width:0;align-items:center;gap:7px}.status{min-width:0;min-height:18px;overflow:hidden;color:var(--muted);font-size:12px;font-variant-numeric:tabular-nums;line-height:1.3;text-overflow:ellipsis}.status.error{color:#a32c3d}.control-footer{margin-top:auto;padding-top:9px;border-top:1px solid var(--line);text-align:center}.memory-usage{color:var(--muted);font-size:10px;font-variant-numeric:tabular-nums}.control-version{display:block;margin-top:3px}.plot-shell{display:grid;grid-template-columns:var(--y-axis-width) var(--y-track-width) minmax(0,1fr) var(--y-label-width);grid-template-rows:var(--x-axis-height) var(--x-track-height) minmax(0,auto) var(--x-label-height);width:min(100%,calc(100dvh - 12px - var(--x-label-height) - var(--x-axis-height) - var(--x-track-height) + var(--y-axis-width) + var(--y-track-width) + var(--y-label-width)),calc(1200px + var(--y-axis-width) + var(--y-track-width) + var(--y-label-width)));max-width:100%;margin-inline:auto}.plot-frame{grid-column:3;grid-row:3;position:relative;width:100%;min-width:0;max-width:1200px;aspect-ratio:1;border-radius:4px;background:#f8f7f2;box-shadow:inset 0 0 0 1px var(--line),0 14px 45px #2c282514}#plot-canvas{display:block;width:100%;height:100%;cursor:crosshair;touch-action:none}.plot-frame.is-loading #plot-canvas{visibility:hidden}#plot-canvas.is-panning{cursor:grabbing}.plot-loading{position:absolute;z-index:2;inset:0;display:grid;place-items:center;pointer-events:none}.plot-loading .dna-loader{display:block}.hover-card{position:absolute;z-index:3;display:grid;gap:2px;min-width:165px;padding:9px 11px;border:1px solid rgba(44,40,37,.16);border-radius:8px;color:#fff;background:#221f24e8;box-shadow:0 8px 20px #1412122e;pointer-events:none;font-size:11px}.hover-card strong{font-size:12px}.hover-card small{margin-top:2px;color:#c9c5cb}.axis-panel{position:relative;min-width:0;min-height:0;overflow:hidden;contain:size layout paint}.axis-panel.is-track-drop-target,.feature-track-stack.is-track-drop-target{z-index:4;outline:2px solid #315f78;outline-offset:-2px;background:#315f7817}.axis-panel.is-track-drop-target:after,.feature-track-stack.is-track-drop-target:after{content:attr(data-track-drop-label);position:absolute;z-index:4;inset:2px;display:grid;place-items:center;border:1px dashed rgba(49,95,120,.78);color:#244d64;background:#ecf4f7e8;font-size:10px;font-weight:700;pointer-events:none}.axis-panel-y.is-track-drop-target:after,.feature-track-stack-y.is-track-drop-target:after{writing-mode:vertical-rl;transform:rotate(180deg)}.axis-panel-y{grid-column:1;grid-row:3}.axis-panel-x{grid-column:3;grid-row:1}.axis-corner{grid-column:1 / 3;grid-row:1 / 3;background:var(--paper)}.axis-panel canvas{position:absolute;inset:0;display:block;width:100%;height:100%}.sequence-label{min-width:0;min-height:0;overflow:hidden;color:#454149;font-size:12px;font-weight:600}.sequence-label-x{grid-column:3;grid-row:4;align-self:center;padding:0 8px;text-align:center;text-overflow:ellipsis;white-space:nowrap}.sequence-label-y{grid-column:4;grid-row:3;display:flex;align-items:center;justify-content:center;writing-mode:vertical-rl;text-overflow:ellipsis;white-space:nowrap}.feature-track-stack{position:relative;display:flex;min-width:0;min-height:0;overflow:hidden;background:var(--paper)}.feature-track-stack-x{grid-column:3;grid-row:2;flex-direction:column-reverse}.feature-track-stack-y{grid-column:2;grid-row:3;flex-direction:row-reverse}.feature-track-panel{flex:0 0 var(--feature-track-size);position:relative;min-width:0;min-height:0;overflow:hidden;contain:size layout paint;background:var(--paper);cursor:grab;touch-action:none}.feature-track-panel.is-track-drag-source{opacity:.24}body.is-track-pointer-dragging{-webkit-user-select:none;user-select:none}body.is-track-pointer-dragging,body.is-track-pointer-dragging *{cursor:grabbing!important}.feature-track-panel-x{border:1px solid var(--line);border-bottom:0}.feature-track-panel-y{border:1px solid var(--line);border-right:0}.feature-track-panel canvas{position:absolute;inset:0;display:block;width:100%;height:100%}.feature-track-name{position:absolute;z-index:2;top:2px;left:3px;padding:0 3px;color:#242227;background:#f8f7f2db;font-size:8px;font-weight:700;line-height:1.35;pointer-events:none}.feature-track-panel-y .feature-track-name{inset:auto 2px 3px auto;writing-mode:vertical-rl;transform:rotate(180deg)}.imported-feature-track-panel .feature-track-name{max-width:min(140px,45%);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.imported-feature-track-panel.feature-track-panel-y .feature-track-name{max-width:none;max-height:min(140px,45%)}.track-hover-card{position:fixed;z-index:30;display:grid;gap:2px;max-width:310px;padding:8px 10px;border:1px solid rgba(44,40,37,.16);border-radius:8px;color:#fff;background:#221f24ed;box-shadow:0 8px 20px #1412122e;pointer-events:none;font-size:10px}.track-hover-card strong{font-size:11px}.track-drag-ghost{position:fixed;z-index:40;pointer-events:none;opacity:.88;background:var(--paper);box-shadow:0 10px 28px #1e252a4d,0 0 0 1px #315f7880;transform:translateZ(0) scale(1.01);transition:filter 80ms linear,opacity 80ms linear}.track-drag-ghost.is-removing{opacity:.74;filter:grayscale(.85);box-shadow:0 8px 24px #2828283d,0 0 0 1px #50505085}.track-drag-ghost.is-removing:after{content:"";position:absolute;z-index:8;inset:0;border:2px solid rgba(70,70,70,.72);background:repeating-linear-gradient(45deg,transparent 0 7px,rgba(65,65,65,.62) 7px 10px,transparent 10px 17px),#e6e6e642}.track-import-dialog{width:min(520px,calc(100vw - 40px));max-height:calc(100vh - 60px);overflow:auto;border:1px solid var(--line);border-radius:12px;padding:20px;color:var(--ink);background:var(--panel);box-shadow:0 22px 70px #221f2433}.track-import-dialog::backdrop{background:#221f2447;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.track-import-dialog h2{margin:0 0 8px;font:500 22px/1.2 Georgia,Times New Roman,serif}.track-import-dialog p{margin:0 0 10px;font-size:12px}.track-import-dialog ul{max-height:260px;margin:0 0 16px;padding-left:20px;overflow:auto;color:var(--muted);font-size:11px}.track-import-dialog-actions{display:flex;justify-content:flex-end;gap:7px}#track-import-confirm{color:#fff;border-color:var(--accent);background:var(--accent)}.export-progress-dialog{width:min(380px,calc(100vw - 40px))}.export-progress-dialog progress{display:block;width:100%;height:10px}.compute-progress{display:flex;flex:0 0 auto;align-items:center;gap:4px;pointer-events:none}.status-action{flex:0 0 auto;padding:3px 7px;border:1px solid rgba(58,87,104,.35);border-radius:5px;color:var(--accent);background:transparent;font-size:10px;cursor:pointer}.compute-progress svg{width:16px;height:16px;transform:rotate(-90deg)}.compute-progress circle{fill:none;stroke-width:2.2}.progress-track{stroke:#3a576826}.progress-ring{stroke:var(--accent);stroke-linecap:round;stroke-dasharray:50.265;stroke-dashoffset:50.265;transition:stroke-dashoffset .12s linear}.compute-progress.is-indeterminate .progress-ring{stroke-dasharray:15 36;animation:spin-progress .9s linear infinite}.compute-progress strong{color:var(--muted);font-size:10px;font-weight:500;font-variant-numeric:tabular-nums}@keyframes spin-progress{to{transform:rotate(360deg)}}@media(max-height:780px){.controls{gap:5px;padding:8px}.control-status{padding-bottom:3px}select,input[type=number]{min-height:30px;padding-block:3px}details{padding-top:6px}details[open]{gap:8px}.advanced-controls[open]{gap:11px}.feature-track-controls[open]{gap:7px}.feature-track-control-item{gap:2px;margin-bottom:6px}.feature-track-control-item>small{display:none}.advanced-controls>label+label{margin-top:7px}.feature-track-controls[open] .imported-track-list:has(>#imported-track-empty:not([hidden])){display:none}.add-track-button{margin-top:0;padding-block:4px}#identity-histogram{height:20px;max-height:20px}.control-footer{padding-top:6px}}
