: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:#0d0d0f;--panel:#17171a;--panel-2:#1e1e22;--line:#292930;--line-strong:#3a3a43;--text:#ededf0;--muted:#9494a0;--accent:#6fb2ff;--accent-soft:#6fb2ff24;--accent-glow:#6fb2ff4d;--occupied:#3f7d60;--occupied-hi:#57a37f;--match:#efb03f;--match-soft:#efb03f29;--edge:inset 0 1px 0 #ffffff0b;--lift:0 1px 2px #0006, 0 6px 18px #00000047;--flag:#9aa1aa;--flag-soft:#9aa1aa1f;--occupied-dim:#35443d;--danger:#c05a68;--danger-soft:#c05a6821;--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;box-shadow:-14px 0 32px #00000061}.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:#6fb2ff38}.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:-.025em;color:var(--text);border-bottom:1px solid var(--line);align-items:center;gap:9px;margin:0 0 16px;padding-bottom:14px;font-size:17px;font-weight:650;display:flex}.sidebar h1:before{content:"";background:linear-gradient(160deg, var(--accent), #2f6fb5);width:15px;height:15px;box-shadow:0 0 12px var(--accent-glow);border-radius:3px;flex:none}.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 .label{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.box-list .count{font-family:var(--mono);color:var(--muted);font-variant-numeric:tabular-nums;flex:none;font-size:11.5px}.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-width:1080px;max-height:100%;display:flex;overflow:auto}.rack{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--edge), var(--lift);padding:14px}.rack-label{letter-spacing:-.01em;color:var(--text);align-items:center;gap:7px;margin:0 0 12px;font-size:13px;font-weight:600;display:flex}.rack-label:before{content:"";background:var(--accent);border-radius:2px;flex:none;width:3px;height:13px}.shelf-grid{grid-template-columns:repeat(4,116px);gap:9px;display:grid}.shelf{background:var(--panel-2);border:1px solid var(--line);border-radius:var(--radius);height:116px;color:var(--text);cursor:pointer;box-shadow:var(--edge);flex-direction:column;justify-content:center;align-items:center;gap:4px;transition:transform .14s,border-color .14s,box-shadow .14s;display:flex;position:relative;overflow:hidden}.shelf:before{content:"";height:calc(var(--fill,0) * 100%);background:var(--occupied);opacity:.22;pointer-events:none;transition:height .2s;position:absolute;bottom:0;left:0;right:0}.shelf:hover{border-color:var(--accent);box-shadow:var(--edge), 0 4px 14px #00000073;transform:translateY(-2px)}.shelf:hover:before{opacity:.32}.shelf.match{border-color:var(--match);box-shadow:var(--edge), 0 0 0 1px var(--match), 0 0 16px var(--match-soft)}.shelf-name{font-family:var(--mono);letter-spacing:-.02em;font-size:20px;font-weight:700;position:relative}.shelf-count{font-family:var(--mono);color:var(--muted);font-variant-numeric:tabular-nums;font-size:11px;position:relative}.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;transition:transform .12s,background .12s,box-shadow .12s,border-color .12s;position:relative}.cell.occupied:hover{z-index:5}.cell.empty:hover{border-color:var(--muted);background:var(--panel-2)}.cell.occupied{background:var(--occupied);border-color:var(--occupied-hi);cursor:pointer;box-shadow:var(--edge)}.cell.occupied:hover{background:var(--occupied-hi);box-shadow:var(--edge), 0 3px 10px #00000080;transform:scale(1.07)}.cell.match{background:var(--match);box-shadow:0 0 0 2px var(--match), 0 0 14px var(--match-soft);border-color:#f5cd82}.cell.selected{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent), 0 0 16px var(--accent-glow);z-index:4}.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);box-shadow:var(--edge), var(--lift);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);box-shadow:var(--edge), var(--lift);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(--muted);font-size:13px}.report-line strong{font-family:var(--mono);letter-spacing:-.02em;color:var(--text);font-variant-numeric:tabular-nums;font-size:17px;font-weight:700}.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}.primary-btn,.ghost-btn,.danger-btn{border-radius:var(--radius);font:inherit;cursor:pointer;white-space:nowrap;padding:7px 12px;font-size:12.5px}.primary-btn{background:var(--accent-soft);border:1px solid var(--accent);color:var(--accent);font-weight:600}.primary-btn:hover:not(:disabled){background:#6fb2ff38}.ghost-btn{border:1px solid var(--line);color:var(--muted);background:0 0}.ghost-btn:hover:not(:disabled){border-color:var(--line-strong);color:var(--text)}.ghost-btn.danger:hover:not(:disabled){border-color:var(--danger);color:var(--danger)}.danger-btn{background:var(--danger-soft);border:1px solid var(--danger);color:var(--danger);font-weight:600}.danger-btn:hover{background:#c05a6838}.primary-btn:disabled,.ghost-btn:disabled{opacity:.4;cursor:default}.delete-vial{border:1px solid var(--line);border-radius:var(--radius);width:100%;color:var(--muted);font:inherit;cursor:pointer;background:0 0;margin-top:22px;padding:8px;font-size:12.5px}.delete-vial:hover{border-color:var(--danger);color:var(--danger)}.delete-confirm{gap:6px;margin-top:22px;display:flex}.delete-confirm>*{flex:1}.browse-btn{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);width:100%;color:var(--text);font:inherit;cursor:pointer;justify-content:center;align-items:center;gap:6px;margin-top:10px;padding:9px 10px;font-size:13px;display:inline-flex}.browse-btn:hover{border-color:var(--accent);color:var(--accent)}.browser{z-index:40;background:var(--bg);flex-direction:column;display:flex;position:absolute;inset:0}.browser-head{border-bottom:1px solid var(--line);justify-content:space-between;align-items:flex-start;gap:16px;padding:18px 24px;display:flex}.browser-title h2{letter-spacing:-.015em;margin:0 0 4px;font-size:18px;font-weight:600}.browser-count{font-family:var(--mono);color:var(--muted);font-variant-numeric:tabular-nums;font-size:12px}.add-vial{border-bottom:1px solid var(--line);background:var(--panel);align-items:flex-end;gap:10px;padding:14px 24px;display:flex}.add-vial .field{flex-direction:column;gap:5px;display:flex}.add-vial .field span{color:var(--muted);font-size:11.5px}.add-vial input,.add-vial select{background:var(--bg);border:1px solid var(--line);border-radius:var(--radius);color:var(--text);font-family:var(--mono);padding:7px 9px;font-size:12.5px}.criteria{border-bottom:1px solid var(--line);flex-direction:column;align-items:flex-start;gap:8px;padding:16px 24px;display:flex}.criteria .search{max-width:420px}.criterion{align-items:center;gap:8px;display:flex}.criterion select,.criterion input{background:var(--bg);border:1px solid var(--line);border-radius:var(--radius);color:var(--text);font:inherit;padding:7px 9px;font-size:12.5px}.criterion input{font-family:var(--mono);width:200px}.criterion select:focus,.criterion input:focus,.add-vial input:focus,.add-vial select:focus,.batch-controls select:focus,.batch-controls input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);outline:none}.criterion-gap{width:200px}.batch{border-bottom:1px solid var(--line);background:var(--panel);padding:14px 24px}.batch:not(.active){opacity:.55}.batch-lead{color:var(--muted);margin-bottom:10px;font-size:11.5px;font-weight:600}.batch.active .batch-lead{color:var(--accent)}.batch-controls{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.batch-controls select,.batch-controls input{background:var(--bg);border:1px solid var(--line);border-radius:var(--radius);color:var(--text);font:inherit;padding:7px 9px;font-size:12.5px}.batch-controls input{font-family:var(--mono);width:180px}.batch-to{color:var(--muted);font-size:12.5px}.batch-spacer{flex:1;min-width:20px}.table-wrap{flex:1;padding:0 24px 24px;overflow:auto}.table-wrap .empty{padding:32px 0}.sample-table{border-collapse:collapse;width:100%;font-size:12.5px}.sample-table th{z-index:1;text-align:left;text-transform:uppercase;letter-spacing:.07em;color:var(--muted);background:var(--bg);border-bottom:1px solid var(--line-strong);white-space:nowrap;padding:10px 10px 8px;font-size:11px;font-weight:600;position:sticky;top:0}.sample-table td{border-bottom:1px solid var(--line);font-family:var(--mono);font-variant-numeric:tabular-nums;white-space:nowrap;padding:6px 10px}.sample-table td .flag-icon{margin:0 0 0 5px}.sample-table tr:hover td{background:var(--panel)}.sample-table tr.picked td{background:var(--accent-soft)}.sample-table .pick{width:34px;padding-right:0}.sample-table .pick input{accent-color:var(--accent);cursor:pointer}.sample-table .open{text-align:right;width:100%}.sample-table .dim{color:var(--line-strong)}.table-wrap .more{color:var(--muted);margin:12px 0 0;font-size:11.5px}@keyframes surface-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.vial-details,.browser{animation:.16s ease-out surface-in}:focus-visible{border-radius:var(--radius);box-shadow:0 0 0 2px var(--bg), 0 0 0 4px var(--accent);outline:none}.cell:focus-visible,.shelf:focus-visible{z-index:6}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.001ms!important;animation-duration:.001ms!important}.cell.occupied:hover,.shelf:hover{transform:none}}
