:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}:root{--bg:#0e0e10;--panel:#151517;--panel-2:#1c1c1f;--line:#26262a;--line-strong:#35353b;--text:#e8e8ea;--muted:#8b8b93;--accent:#7ea2d8;--accent-soft:#7ea2d821;--occupied:#3c6f57;--occupied-hi:#4d8a6c;--match:#d9a441;--match-soft:#d9a44126;--flag:#9aa1aa;--flag-soft:#9aa1aa1f;--occupied-dim:#35443d;--radius:4px;--panel-w:340px;--sans:ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--mono:ui-monospace, "SF Mono", "JetBrains Mono", Menlo, Consolas, monospace}*{box-sizing:border-box}body{margin:0}.freezer{background:var(--bg);width:100vw;height:100vh;color:var(--text);font:13px/1.45 var(--sans);position:relative;overflow:hidden}.freezer-track{height:100%;width:calc(100vw + var(--panel-w));transition:transform .35s;display:flex}.freezer-track>*{flex:none;height:100%}.freezer.editing .freezer-track{transform:translateX(calc(-1 * var(--panel-w)))}.vial-editor{width:var(--panel-w);border-left:1px solid var(--line);background:var(--panel);padding:18px;overflow-y:auto}.vial-editor .editor-head{justify-content:space-between;align-items:center;display:flex}.vial-editor h2{letter-spacing:-.01em;margin:0;font-size:14px;font-weight:600}.head-actions{align-items:center;gap:6px;display:flex}.icon-btn{border:1px solid var(--line);border-radius:var(--radius);width:28px;height:28px;color:var(--muted);cursor:pointer;background:0 0;flex:none;justify-content:center;align-items:center;display:inline-flex}.icon-btn:hover{border-color:var(--accent);color:var(--text)}.icon{flex:none;width:14px;height:14px}.icon.sep-icon{width:11px;height:11px;color:var(--line-strong);vertical-align:-1px}.icon.flag-icon{vertical-align:-1px;width:12px;height:12px;margin-right:5px}.vial-editor .editor-loc{font-family:var(--mono);color:var(--muted);font-variant-numeric:tabular-nums;margin:8px 0 14px;font-size:12px}.cross-view{background:var(--accent-soft);border:1px solid var(--accent);border-radius:var(--radius);width:100%;color:var(--accent);font:inherit;cursor:pointer;justify-content:center;align-items:center;gap:6px;margin-bottom:18px;padding:9px 10px;font-size:13px;font-weight:600;display:inline-flex}.cross-view:hover{background:#7ea2d833}.vial-editor .editor-sub{color:var(--muted);border-top:1px solid var(--line);margin:20px 0 10px;padding-top:14px;font-size:11.5px;font-weight:600}.vial-editor .field{flex-direction:column;gap:5px;margin-bottom:11px;display:flex}.vial-editor .field span{color:var(--muted);font-size:11.5px}.vial-editor .field input,.vial-editor .field select{background:var(--bg);border:1px solid var(--line);border-radius:var(--radius);width:100%;color:var(--text);font-family:var(--mono);padding:8px 10px;font-size:13px}.vial-editor .field input:focus,.vial-editor .field select:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);outline:none}.sidebar{width:var(--panel-w);border-right:1px solid var(--line);padding:18px 16px;overflow-y:auto}.sidebar h1{letter-spacing:-.015em;color:var(--text);border-bottom:1px solid var(--line);margin:0 0 16px;padding-bottom:14px;font-size:15px;font-weight:600}.sidebar h2{text-transform:uppercase;letter-spacing:.09em;color:var(--muted);border-bottom:1px solid var(--line);margin:24px 0 10px;padding-bottom:7px;font-size:11px;font-weight:600}.view-toggle{gap:6px;margin-bottom:14px;display:flex}.view-toggle button{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);color:var(--muted);cursor:pointer;font:inherit;flex:1;padding:7px;font-size:13px}.view-toggle button:hover{border-color:var(--line-strong);color:var(--text)}.view-toggle button.active{background:var(--panel-2);border-color:var(--accent);color:var(--text)}.search{background:var(--bg);border:1px solid var(--line);border-radius:var(--radius);width:100%;color:var(--text);font:inherit;padding:9px 11px;font-size:13px}.search::placeholder{color:var(--muted)}.search:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);outline:none}.results{margin-top:14px}.results-count{color:var(--muted);margin-bottom:8px;font-size:11.5px}.results ul,.box-list{margin:0;padding:0;list-style:none}.results li button{border-radius:0 var(--radius) var(--radius) 0;width:100%;color:var(--text);text-align:left;cursor:pointer;background:0 0;border:none;border-left:2px solid #0000;flex-direction:column;align-items:flex-start;gap:2px;padding:7px 9px;display:flex}.results li button:hover{background:var(--panel);border-left-color:var(--accent)}.results .donor{font-family:var(--mono);letter-spacing:-.01em;font-size:13px;font-weight:600}.results .loc{font-family:var(--mono);color:var(--muted);font-size:11px}.results .more{color:var(--muted);padding:6px 9px;font-size:12px}.box-list button{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);width:100%;color:var(--text);text-align:left;cursor:pointer;font:inherit;border-left:2px solid #0000;justify-content:space-between;align-items:center;gap:8px;margin-bottom:4px;padding:9px 11px;font-size:13px;display:flex}.box-list button:hover{border-color:var(--line-strong)}.box-list button.active{background:var(--panel-2);border-color:var(--line-strong);border-left-color:var(--accent)}.box-list .badge{text-align:center;background:var(--match-soft);min-width:18px;color:var(--match);font-family:var(--mono);font-variant-numeric:tabular-nums;border-radius:3px;flex:none;padding:1px 5px;font-size:11px;font-weight:600}.stage{width:calc(100vw - var(--panel-w));flex-direction:column;justify-content:center;align-items:center;padding:28px;display:flex}.stage:has(.rack-overview){justify-content:flex-start}.rack-overview{flex-wrap:wrap;place-content:flex-start;align-items:flex-start;gap:20px;width:100%;max-height:100%;display:flex;overflow:auto}.rack{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:14px}.rack-label{letter-spacing:-.01em;color:var(--text);margin:0 0 12px;font-size:13px;font-weight:600}.shelf-grid{grid-template-columns:repeat(4,104px);gap:8px;display:grid}.shelf{background:var(--panel-2);border:1px solid var(--line);border-radius:var(--radius);height:104px;color:var(--text);cursor:pointer;flex-direction:column;justify-content:center;align-items:center;gap:4px;display:flex}.shelf:hover{border-color:var(--accent)}.shelf.match{border-color:var(--match);box-shadow:inset 0 0 0 1px var(--match)}.shelf-name{font-family:var(--mono);font-size:18px;font-weight:600}.shelf-count{font-family:var(--mono);color:var(--muted);font-size:11px}.shelf-view{flex-direction:column;align-items:center;gap:14px;max-height:100%;display:flex}.shelf-path{flex-wrap:wrap;align-self:flex-start;align-items:center;gap:3px;font-size:12px;display:flex}.shelf-path .sep{color:var(--line-strong);display:inline-flex}.shelf-path .crumb{color:var(--accent);font:inherit;cursor:pointer;background:0 0;border:none;border-radius:4px;padding:3px 6px}.shelf-path .crumb:hover{background:var(--panel)}.shelf-path .crumb-static{color:var(--muted)}.shelf-path .crumb-current{color:var(--text);font-weight:600}.scene{width:100%;height:calc(100vh - 56px)}.geometry{width:100%;height:100%;position:relative}.breadcrumb{z-index:1;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);flex-wrap:wrap;align-items:center;gap:2px;padding:6px 8px;display:flex;position:absolute;top:12px;left:12px;box-shadow:0 1px 3px #00000080}.breadcrumb .sep{color:var(--muted);margin:0 2px}.breadcrumb button{color:var(--accent);cursor:pointer;font:inherit;background:0 0;border:none;border-radius:4px;padding:2px 6px}.breadcrumb button:hover{background:var(--panel-2)}.breadcrumb button.current{color:var(--text);cursor:default;font-weight:600}.breadcrumb .crumb-x{color:var(--muted);border-radius:4px;margin-left:4px;padding:0 6px;font-size:16px;line-height:1}.breadcrumb .crumb-x:hover{color:var(--text);background:var(--panel-2)}.fps-stats{top:auto!important;bottom:0!important}.scene-location{z-index:1;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);font-variant-numeric:tabular-nums;max-width:320px;max-height:calc(100% - 24px);padding:10px 12px;position:absolute;top:12px;right:12px;overflow-y:auto;box-shadow:0 1px 3px #00000080}.scene-location-head{color:var(--muted);margin-bottom:8px;font-size:12px}.scene-location ul{margin:0;padding:0;list-style:none}.scene-location li{flex-direction:column;padding:3px 0;display:flex}.scene-location .donor{font-family:var(--mono);font-weight:600}.scene-location .loc{font-family:var(--mono);color:var(--muted);font-size:11px}.scene-location .more{color:var(--muted);font-size:12px}.scene-label{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);color:var(--text);font:12px/1.2 var(--sans);white-space:nowrap;padding:3px 8px;box-shadow:0 1px 3px #00000080}.scene-label.rack{border-color:var(--accent);font-weight:700}.scene-label.shelf{font-family:var(--mono);color:var(--muted);font-size:11px}.vial-tooltip{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);min-width:150px;color:var(--text);font:12px/1.4 var(--sans);padding:9px 11px;transform:translateY(-6px);box-shadow:0 2px 6px #0000008c}.vial-tooltip .vt-head{font-family:var(--mono);margin-bottom:7px;font-weight:700}.vial-tooltip .vt-row{font-family:var(--mono);font-variant-numeric:tabular-nums;justify-content:space-between;gap:14px;display:flex}.vial-tooltip .vt-row span{font-family:var(--sans);color:var(--muted)}.box-view{flex-direction:column;align-items:center;display:flex}.box-view h2{letter-spacing:-.01em;color:var(--text);margin:0 0 18px;font-size:16px;font-weight:600}.grid{--cell:min(7.5vh, 5.5vw);gap:4px;width:max-content;display:grid}.grid .head,.grid .corner{font-family:var(--mono);color:var(--muted);height:var(--cell);justify-content:center;align-items:center;font-size:clamp(11px,1.4vh,15px);display:flex}.cell{height:var(--cell);border:1px solid var(--line);background:var(--panel);cursor:default;border-radius:3px;position:relative}.cell.occupied:hover{z-index:5}.cell.empty:hover{border-color:var(--muted)}.cell.occupied{background:var(--occupied);border-color:var(--occupied-hi);cursor:pointer}.cell.occupied:hover{background:var(--occupied-hi)}.cell.match{background:var(--match);box-shadow:0 0 0 2px var(--match);border-color:#e8c98a}.cell.selected{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent)}.cell-label{font-family:var(--mono);font-size:clamp(8px, calc(var(--cell) * .21), 14px);letter-spacing:-.02em;color:#e8e8eaeb;pointer-events:none;justify-content:center;align-items:center;gap:2px;padding:0 2px;line-height:1;display:flex;position:absolute;inset:0;overflow:hidden}.cell.empty .cell-label{color:#8b8b9373}.cell.match .cell-label{color:#241d0d;font-weight:700}.cell-count{opacity:.75;font-size:.75em}.cell-tip{z-index:6;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);min-width:130px;color:var(--text);font:12px/1.35 var(--sans);white-space:nowrap;pointer-events:none;opacity:0;padding:7px 9px;transition:opacity .12s;position:absolute;bottom:calc(100% + 6px);left:50%;transform:translate(-50%);box-shadow:0 2px 6px #0000008c}.cell.occupied:hover .cell-tip{opacity:1}.cell-tip .name{font-family:var(--mono);margin-bottom:5px;font-weight:700;display:block}.cell-tip .row{font-family:var(--mono);font-variant-numeric:tabular-nums;justify-content:space-between;gap:14px;display:flex}.cell-tip .row .k{font-family:var(--sans);color:var(--muted)}.caption{height:1.4em;font-family:var(--mono);color:var(--text);font-variant-numeric:tabular-nums;margin-top:18px;font-size:13px}.legend{letter-spacing:.05em;color:var(--muted);flex-wrap:wrap;gap:16px;margin-top:14px;font-size:11.5px;display:flex}.legend span{align-items:center;gap:6px;display:inline-flex}.swatch{border:1px solid var(--line);border-radius:2px;width:12px;height:12px;display:inline-block}.swatch.occupied{background:var(--occupied)}.swatch.match{background:var(--match)}.swatch.empty{background:var(--panel)}.legend .unplaced{color:var(--match)}.empty{color:var(--muted)}.vial-details{z-index:30;background:var(--bg);flex-direction:column;display:flex;position:absolute;inset:0;overflow-y:auto}.details-head{border-bottom:1px solid var(--line);background:var(--bg);z-index:1;justify-content:space-between;align-items:flex-start;gap:16px;padding:18px 24px;display:flex;position:sticky;top:0}.details-title h2{font-family:var(--mono);letter-spacing:-.02em;margin:0 0 5px;font-size:22px;font-weight:700}.details-path{font-family:var(--mono);color:var(--muted);flex-wrap:wrap;align-items:center;gap:4px;font-size:12px;display:flex}.details-path .sep{color:var(--line-strong)}.details-path .slot{color:var(--accent);font-weight:600}.cross-view.inline{width:auto;margin:0;padding:6px 12px}.details-cols{grid-template-columns:repeat(auto-fit,minmax(300px,1fr));align-items:start;gap:18px;padding:22px 24px 32px;display:grid}.details-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:16px 18px}.details-card h3{color:var(--muted);margin:0 0 14px;font-size:12px;font-weight:600}.details-card h3.spaced{border-top:1px solid var(--line);margin-top:24px;padding-top:16px}.details-card .editor-sub{margin-top:18px}.details-card .field{flex-direction:column;gap:5px;margin-bottom:11px;display:flex}.details-card .field span{color:var(--muted);font-size:11.5px}.details-card .field input,.details-card .field select{background:var(--bg);border:1px solid var(--line);border-radius:var(--radius);width:100%;color:var(--text);font-family:var(--mono);padding:8px 10px;font-size:13px}.details-card .field input:focus,.details-card .field select:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);outline:none}.kv{background:var(--line);border:1px solid var(--line);border-radius:var(--radius);gap:1px;margin:0;display:grid;overflow:hidden}.kv>div{background:var(--panel-2);justify-content:space-between;gap:12px;padding:8px 10px;display:flex}.kv dt{color:var(--muted);font-size:12px}.kv dd{font-family:var(--mono);font-variant-numeric:tabular-nums;text-align:right;word-break:break-word;margin:0;font-size:12px}.details-note{background:var(--panel-2);border-left:2px solid var(--line-strong);border-radius:0 var(--radius) var(--radius) 0;color:var(--text);margin:14px 0 0;padding:10px 12px;font-size:12px}.details-note.warn{border-left-color:var(--match)}.details-note span{color:var(--muted);margin-bottom:4px;font-size:10px;display:block}.donor-list{max-height:260px;margin:0;padding:0;list-style:none;overflow-y:auto}.donor-list button{border-radius:0 var(--radius) var(--radius) 0;width:100%;color:var(--text);font-family:var(--mono);text-align:left;cursor:pointer;background:0 0;border:none;border-left:2px solid #0000;padding:6px 8px;font-size:12px}.donor-list button:hover{background:var(--panel-2);border-left-color:var(--accent)}.donor-list .more{color:var(--muted);padding:6px 8px;font-size:12px}.slot-map{gap:2px;max-width:340px;margin-bottom:16px;display:grid}.map-cell{aspect-ratio:1;background:var(--panel-2);border:1px solid var(--line);color:#8b8b9380;font-family:var(--mono);cursor:pointer;border-radius:2px;padding:0;font-size:9px;line-height:1}.map-cell:disabled{cursor:default}.map-cell.occupied{background:var(--occupied);border-color:var(--occupied-hi);color:#e8e8eae6}.map-cell.occupied:hover{background:var(--occupied-hi)}.map-cell.selected{background:var(--accent);border-color:var(--text);color:#0e1c2b;font-weight:700}.details-notes{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);margin:-10px 24px 28px}.notes-head{border-bottom:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:10px;padding:14px 18px 12px;display:flex}.notes-head h3{color:var(--muted);margin:0;font-size:12px;font-weight:600}.notes-hint{color:var(--muted);font-size:11px}.notes-hint code{background:var(--panel-2);border:1px solid var(--line);font-family:var(--mono);border-radius:3px;padding:1px 4px;font-size:10px}.notes-body{background:var(--line);grid-template-columns:1fr 1fr;gap:1px;display:grid}@media (width<=900px){.notes-body{grid-template-columns:1fr}}.notes-input{background:var(--panel);border-radius:0 0 0 var(--radius);min-height:260px;color:var(--text);font-family:var(--mono);resize:vertical;border:none;padding:14px 16px;font-size:13px;line-height:1.55}.notes-input:focus{background:var(--bg);outline:none}.notes-input::placeholder{color:var(--line-strong)}.notes-preview{background:var(--panel-2);border-radius:0 0 var(--radius) 0;min-height:260px;max-height:60vh;padding:14px 16px;overflow-y:auto}.md-empty{color:var(--line-strong);margin:0;font-size:13px}.md>:first-child{margin-top:0}.md>:last-child{margin-bottom:0}.md h3,.md h4,.md h5,.md h6{letter-spacing:-.01em;text-transform:none;color:var(--text);margin:18px 0 8px;font-weight:600}.md h3{font-size:16px}.md h4{font-size:14px}.md h5,.md h6{color:var(--muted);font-size:13px}.md p{margin:0 0 10px;font-size:13px;line-height:1.6}.md ul,.md ol{margin:0 0 10px;padding-left:20px;font-size:13px;line-height:1.6}.md li{margin-bottom:3px}.md .md-checklist{padding-left:2px;list-style:none}.md .md-checklist li{align-items:baseline;gap:8px;display:flex}.md .md-checklist input{accent-color:var(--accent);pointer-events:none}.md .md-checklist li.done{color:var(--muted);text-decoration:line-through}.md code{background:var(--bg);border:1px solid var(--line);font-family:var(--mono);color:var(--accent);border-radius:3px;padding:1px 4px;font-size:12px}.md pre{background:var(--bg);border:1px solid var(--line);border-radius:var(--radius);margin:0 0 10px;padding:10px 12px;overflow-x:auto}.md pre code{color:var(--text);background:0 0;border:none;padding:0}.md blockquote{background:var(--panel);border-left:2px solid var(--line-strong);border-radius:0 var(--radius) var(--radius) 0;color:var(--muted);margin:0 0 10px;padding:6px 12px;font-size:13px}.md hr{border:none;border-top:1px solid var(--line);margin:16px 0}.md a{color:var(--accent)}.md strong{font-weight:700}.cell.flagged:before{content:"";pointer-events:none;background:repeating-linear-gradient(-45deg,#0e0e1057 0 2px,#0000 2px 6px);border-radius:2px;position:absolute;inset:0}.cell.occupied.flagged:not(.match){background:var(--occupied-dim)}.cell.occupied.flagged:not(.match):hover{background:#405249}.cell.occupied.flagged:not(.selected){border-style:dashed;border-color:var(--flag)}.cell-tip .tip-flag{border-top:1px solid var(--line);max-width:240px;color:var(--flag);white-space:normal;margin-top:6px;padding-top:6px;display:block}.cell-tip .tip-flag .k{color:var(--flag);margin-bottom:2px;font-size:10px;display:block}.swatch.flagged{background:var(--occupied-dim);border:1px dashed var(--flag)}.legend .flag-count{color:var(--flag)}.map-cell.flagged.occupied:not(.selected){background:var(--occupied-dim);border-style:dashed;border-color:var(--flag)}.map-cell.flagged.occupied:not(.selected):hover{background:#405249}.flag-strip{background:var(--flag-soft);border-left:2px solid var(--flag);border-radius:0 var(--radius) var(--radius) 0;color:var(--text);margin:0 0 14px;padding:9px 11px;font-size:12px;line-height:1.45}.flag-strip span{color:var(--flag);margin-bottom:3px;font-size:10px;font-weight:600;display:block}.import-report{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);flex-basis:100%;margin-bottom:4px;padding:14px 16px}.report-head{flex-wrap:wrap;align-items:baseline;gap:12px;display:flex}.report-head h3{color:var(--muted);margin:0;font-size:12px;font-weight:600}.report-line{color:var(--text);font-size:13px}.report-line strong{font-family:var(--mono);font-variant-numeric:tabular-nums}.report-chips{flex-wrap:wrap;gap:8px;margin-top:11px;display:flex}.chip{border:1px solid var(--line);border-radius:var(--radius);font-variant-numeric:tabular-nums;color:var(--muted);cursor:default;padding:4px 9px;font-size:11px}.chip.ok{border-color:var(--occupied-hi);color:#7fb99b}.chip.flag{background:var(--flag-soft);border-color:var(--flag);color:var(--flag)}.chip.warn{background:var(--match-soft);border-color:var(--match);color:var(--match)}.report-warnings{border-top:1px solid var(--line);font-family:var(--mono);color:var(--muted);margin:12px 0 0;padding:10px 0 0;font-size:11.5px;line-height:1.5;list-style:none}.report-warnings li{border-left:2px solid var(--match);margin-bottom:4px;padding-left:10px}.report-warnings .more{border-left-color:#0000}
