.style-controls{display:flex;flex-direction:column;gap:8px}.sc-row{display:flex;gap:8px;align-items:flex-end}.sc-row .sc-wide{flex:1 1 auto;min-width:0}.sc-unit{display:flex;gap:2px}.sc-unit button{min-width:38px}.sc-note{font-size:11px}.sc-group{border:1px solid #e2ddd4;border-radius:10px;background:#fbfaf7}.sc-group>summary{cursor:pointer;padding:7px 10px;font-weight:600;font-size:12px;color:#24302a;list-style-position:inside}.sc-group[open]>summary{border-bottom:1px solid #ece8e0}.sc-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;padding:8px 10px 10px}.sc-grid .sc-wide,.sc-grid .sc-sides{grid-column:1 / -1}.sc-field>span:first-child{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sc-input input{width:100%;min-width:0}.sc-input small{color:#5e6b64;font-size:11px}.sc-sides{display:flex;flex-wrap:wrap;gap:4px 12px}.sc-check{gap:6px}.sc-field input[type=color]{width:100%;height:30px;padding:2px}@media(pointer:coarse),(max-width:1023px){.sc-group>summary{min-height:40px;display:flex;align-items:center}.sc-unit button{min-height:40px}}:root{--ink: #16181d;--ink-2: #2c313a;--muted: #5e6570;--muted-2: #8a919c;--line: #d8dce3;--line-soft: #e8ebf0;--paper: #eef0f3;--paper-2: #f6f7f9;--panel: #ffffff;--accent: #1f4e79;--accent-ink: #163a5c;--accent-soft: #e9eff6;--accent-line: #b9cbe0;--studio: #0f766e;--studio-soft: #e6f3f1;--danger: #9f1239;--warn-bg: #fff8e8;--warn-line: #e6c88a;--warn-ink: #5b4300;--radius: 10px;--radius-sm: 7px;--shadow: 0 1px 2px rgba(22, 24, 29, .04), 0 8px 24px rgba(22, 24, 29, .06);--shadow-lg: 0 2px 4px rgba(22, 24, 29, .04), 0 18px 48px rgba(22, 24, 29, .12);--serif: "Source Serif 4", "Times New Roman", serif;--mono: "IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--ease: cubic-bezier(.22, .61, .36, 1);color:var(--ink);background:var(--paper);font-family:IBM Plex Sans,Segoe UI,sans-serif;font-size:14px;line-height:1.45;-webkit-font-smoothing:antialiased}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit;color:inherit}button{min-height:30px;padding:5px 11px;border:1px solid var(--line);border-radius:var(--radius-sm);background:#fff;color:var(--ink);font-size:13px;font-weight:500;line-height:1.3;cursor:pointer;transition:background-color .15s ease,border-color .15s ease,color .15s ease,box-shadow .15s ease}button:hover{border-color:#b7c0cc;background:#fafbfc}button:active{background:#f1f4f8}button.active,.plot-btn.active,.sample.active{color:var(--accent);border-color:color-mix(in srgb,var(--accent) 45%,var(--line));background:color-mix(in srgb,var(--accent) 8%,#fff);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent) 18%,transparent)}.primary,button.primary{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600;box-shadow:0 1px 2px #16181d1f,inset 0 1px #ffffff1f}.primary:hover,button.primary:hover{background:var(--accent-ink);border-color:var(--accent-ink)}button.quiet{border-color:transparent;background:transparent;color:var(--accent)}button.quiet:hover{background:var(--accent-soft)}button.danger{color:var(--danger)}button.is-disabled,button:disabled{opacity:.45;cursor:not-allowed}button.is-disabled:hover,button:disabled:hover{border-color:var(--line);background:#fff}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid color-mix(in srgb,var(--accent) 55%,transparent);outline-offset:0;border-color:var(--accent)}html,body,#root{height:100%}.boot-error{max-width:36rem;padding:32px 24px;font-family:IBM Plex Sans,Segoe UI,sans-serif;color:var(--ink)}.boot-error h1{font-family:var(--serif);font-size:24px;margin:0 0 12px}.boot-error p{line-height:1.5}.app{--rail-w: clamp(240px, 20vw, 320px);--inspector-w: clamp(260px, 22vw, 340px);display:grid;grid-template-columns:var(--rail-w) minmax(0,1fr) var(--inspector-w);grid-template-rows:auto minmax(0,1fr) auto;height:100vh;height:100dvh;min-width:0;background:var(--paper)}.app.data-mode{grid-template-columns:minmax(0,1fr)}h2,h3{margin:0;font-weight:600;color:var(--ink)}h2{font-size:15px;letter-spacing:-.005em}h3{font-size:13px}.data-toolbar h2{font-family:var(--serif);font-size:22px;font-weight:600;letter-spacing:-.015em}.rail h3,.inspector h3,.samples h3,.data-side h3,.chooser h3{font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.lead,.muted,.methods{color:var(--muted);margin:0}.lead,.muted{font-size:13px;line-height:1.5}.methods{white-space:pre-wrap;font-size:12.5px;line-height:1.55;padding:10px 12px;background:var(--paper-2);border:1px solid var(--line-soft);border-radius:var(--radius-sm);color:var(--ink-2);max-height:40vh;overflow:auto}.hint{display:block;font-size:11.5px;color:var(--muted);font-weight:400;line-height:1.4}label{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--muted);font-weight:500}input,select,textarea{min-width:0;max-width:100%;min-height:30px;border:1px solid var(--line);border-radius:6px;padding:5px 8px;background:#fff;color:var(--ink);font-size:13px;transition:border-color .15s ease}input:hover,select:hover,textarea:hover{border-color:#b7c0cc}input[type=checkbox],input[type=radio]{min-height:0;accent-color:var(--accent);width:15px;height:15px}input[type=color]{padding:2px}textarea{min-height:64px;resize:vertical;line-height:1.45}.check{flex-direction:row;align-items:center;gap:7px;color:var(--ink-2);font-weight:400}.top{grid-column:1 / -1;display:flex;flex-wrap:wrap;justify-content:flex-start;align-items:center;gap:8px 16px;min-height:52px;padding:6px 14px;background:#fff;border-bottom:1px solid var(--line);font-family:IBM Plex Sans,Segoe UI,sans-serif;position:relative;z-index:30}.top div{display:flex;gap:12px;align-items:baseline}.top p{margin:0;color:var(--muted)}.top .bioview-brand{padding-right:14px;border-right:1px solid var(--line)}.top .bioview-status{flex:1 1 240px;min-width:0;max-width:none;margin:0;text-align:right;font-size:12px;color:var(--muted)}.top-tools{display:flex;gap:6px;align-items:center;flex:none}.top-tools button{min-height:32px;font-weight:600;display:inline-flex;align-items:center;gap:6px}.top-tools .count{min-width:18px;padding:0 5px;border-radius:999px;background:var(--accent-soft);color:var(--accent);font-size:11px;font-weight:700;line-height:18px;text-align:center;font-variant-numeric:tabular-nums}.data-page{min-height:0;min-width:0;display:grid;grid-template-columns:clamp(260px,22vw,320px) minmax(0,1fr)}.data-side,.data-main{min-height:0;min-width:0;overflow:auto;overscroll-behavior:contain;padding:16px}.data-main{padding:18px 20px;display:flex;flex-direction:column;gap:12px}.data-main>*{flex:none}.data-side{background:#fff;border-right:1px solid var(--line);display:flex;flex-direction:column;gap:4px}.dropzone{display:flex;flex-direction:column;gap:8px;align-items:flex-start;margin-top:12px;padding:16px;border:1.5px dashed var(--accent-line);border-radius:12px;background:var(--paper-2);transition:background-color .15s ease,border-color .15s ease}.dropzone strong{font-size:14px;color:var(--ink)}.dropzone.hover{background:var(--accent-soft);border-color:var(--accent)}.dropzone span,.data-empty{color:var(--muted);font-size:13px}.data-empty{margin:0;padding:28px 20px;border:1.5px dashed var(--line);border-radius:12px;background:#fff9;text-align:center}.data-toolbar{display:flex;flex-wrap:wrap;justify-content:space-between;gap:12px;align-items:center}.data-toolbar p{margin-top:2px}.examples-label{margin:14px 0 0}.drag-box{position:absolute;pointer-events:none;border:1.5px solid var(--accent);background:#1f4e7914}.drag-box.zoom{border-style:dashed;border-color:var(--ink);background:#16181d0d}.gate-tree{display:flex;flex-direction:column;gap:4px}.gate-row{display:flex;flex-direction:column;gap:4px;padding:6px 8px;border:1px solid var(--line);border-radius:8px;background:#fff}.gate-row.active{border-color:var(--accent-line);background:var(--accent-soft)}.gate-row button.link{border:0;background:none;padding:0;min-height:0;text-align:left;font:inherit;font-weight:600;color:var(--ink);cursor:pointer;min-width:0;width:100%}.gate-row button.link b{float:right;font-weight:600;color:var(--accent)}.gate-row small{display:block;color:var(--muted);font-size:11px;font-weight:400}.gate-row input{width:100%;padding:2px 6px;font-size:12px}.gate-actions{display:flex;gap:4px}.chooser{display:flex;flex-direction:column;gap:10px;margin:0;padding:14px;background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow)}.rail .chooser{margin:12px 0 0;padding:10px;box-shadow:none;border-color:var(--line-soft);background:var(--paper-2)}.chooser>.hold{align-self:flex-start}.chooser-types{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px}.chooser-types .hold{display:flex}.type-card{flex:1;display:flex;flex-direction:column;align-items:flex-start;gap:2px;text-align:left;padding:8px 10px;border-radius:9px;font-weight:600}.type-card span{font-size:12px;font-weight:400;color:var(--muted)}button.type-card.active{color:var(--ink);border-color:var(--accent);background:var(--accent-soft);box-shadow:inset 0 0 0 1px var(--accent)}.chooser-fields{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:8px}.pick-list{display:flex;flex-direction:column;gap:6px;margin:0;padding:8px 10px;border:1px solid var(--line);border-radius:10px}.pick-list legend{font-size:12px;color:var(--muted);padding:0 4px;font-weight:600}.chips{display:flex;flex-wrap:wrap;gap:6px;max-height:150px;overflow:auto}.chip{flex-direction:row;align-items:center;gap:5px;padding:3px 9px;border:1px solid var(--line);border-radius:999px;color:var(--ink);background:#fff;font-weight:500}.chip small{color:var(--muted)}.chooser-fields .wide{grid-column:1 / -1}.chooser-fields .check{flex-direction:row;align-items:center;gap:6px;align-self:end;padding-bottom:6px}button.mini,.mini{min-height:26px;padding:2px 9px;font-size:12px;border-radius:6px}.grid-wrap{display:flex;flex-direction:column;gap:8px}.grid-tools{display:flex;flex-wrap:wrap;gap:8px 20px;align-items:flex-end}.grid-tool{display:flex;gap:6px;align-items:flex-end;margin:0}.grid-tool input{width:96px}.grid-tool input.find-input{width:150px}.grid-status{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;font-size:12.5px;color:var(--muted);font-variant-numeric:tabular-nums}.grid-message{font-size:13px}.grid-scroll{position:relative;height:62vh;min-height:320px;overflow:auto;background:#fff;border:1px solid var(--line);border-radius:12px;overscroll-behavior:contain;box-shadow:var(--shadow);contain:strict}.grid-scroll:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.grid-head,.grid-row{display:grid;grid-template-columns:var(--grid-cols);box-sizing:border-box}.grid-head{position:sticky;top:0;z-index:3;background:var(--paper-2);box-shadow:inset 0 -1px 0 var(--line)}.grid-body{position:relative}.grid-block{position:absolute;top:0;left:0;will-change:transform;contain:layout style}.grid-row{height:30px;background:#fff;box-shadow:inset 0 -1px 0 var(--line-soft)}.grid-row.odd{background:#fbfbfc}.grid-row.flash{background:#fff2c6;transition:background .3s}.grid-cell{min-width:0;padding:0 8px;font-size:13px;line-height:30px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.grid-cell.num{text-align:right;font-variant-numeric:tabular-nums;font-family:var(--mono);font-size:12px}.grid-cell.hit{background:var(--accent-soft);box-shadow:inset 0 0 0 2px var(--accent)}.grid-head .grid-cell{display:flex;flex-direction:column;justify-content:center;line-height:1.2;cursor:context-menu}.grid-head strong{font-weight:600;font-size:12.5px;overflow:hidden;text-overflow:ellipsis}.grid-menu{position:fixed;z-index:40;min-width:180px;padding:6px;background:#fff;border:1px solid var(--line);border-radius:10px;box-shadow:0 12px 32px #10182829}.grid-menu button{display:block;width:100%;border:0;background:none;text-align:left;padding:7px 10px;border-radius:7px;font:inherit;font-size:13px;cursor:pointer}.grid-menu button:hover,.grid-menu button:focus-visible{background:#f1f4f8;outline:none}.grid-head small{color:var(--muted);font-size:10.5px;text-transform:uppercase;letter-spacing:.06em}.grid-num{position:sticky;left:0;z-index:1;text-align:right;color:var(--muted);background:var(--paper-2);box-shadow:inset -1px 0 0 var(--line);font-variant-numeric:tabular-nums}.grid-head .grid-num{z-index:4;align-items:flex-end}.rail,.inspector{background:#fff;overflow:auto;overscroll-behavior:contain;padding:12px 14px 16px;border-right:1px solid var(--line)}.panel-shell{min-width:0;min-height:0;display:flex;flex-direction:column;background:#fff}.panel-shell:focus{outline:none}.panel-shell>.rail,.panel-shell>.inspector{flex:1 1 auto;min-height:0}.drawer-head{flex:none;display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 12px;border-bottom:1px solid var(--line);background:var(--paper-2)}.drawer-head strong{font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.drawer-scrim{display:none}.inspector{border-right:0;border-left:1px solid var(--line)}.steps{display:grid;grid-template-columns:repeat(auto-fit,minmax(58px,1fr));gap:2px;padding:2px;background:#f3f5f8;border:1px solid var(--line);border-radius:8px}.steps .hold{display:flex;min-width:0}.steps button{flex:1 1 auto;min-height:28px;padding:4px 5px;font-size:12.5px;border:0;border-radius:6px;background:transparent;color:var(--muted);font-weight:600;box-shadow:none}.steps button:hover{color:var(--ink);background:transparent}.steps button.active{background:#fff;color:var(--ink);border:0;box-shadow:0 1px 2px #00000014}.row,.plot-bar{display:flex;flex-wrap:wrap;gap:6px}.stack,.inspector section,.samples{display:flex;flex-direction:column;gap:8px;margin-top:14px}.inspector section{padding-top:12px;border-top:1px solid var(--line-soft)}.inspector section:first-of-type{border-top:0;padding-top:0}.stack>.hold>button,.samples>.hold>button{width:100%;text-align:left}.stack>.hold>button.primary{text-align:center}.stack>.hold,.samples>.hold{display:flex}.sample{display:flex;flex-direction:column;align-items:flex-start;gap:1px;text-align:left;padding:7px 10px;border-radius:9px}.sample strong{font-weight:600}.sample span{color:var(--muted);font-size:12px;font-weight:400}.sample.active span{color:var(--accent-ink)}.grid-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.grid-2>*{min-width:0}.inspector-head{display:flex;justify-content:space-between;align-items:center;gap:8px}.inspector-head h2{font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.stage{min-width:0;min-height:0;display:flex;flex-direction:column;padding:12px 14px;gap:10px;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain}.stage>*{flex:none;min-width:0}.stage-head{display:flex;align-items:flex-start;gap:8px;min-width:0}.stage-head .plot-bar{flex:1 1 auto;min-width:0}.panel-toggle{flex:none;font-weight:600;white-space:nowrap}.plot-bar{gap:4px}.plot-btn{white-space:nowrap;min-height:28px;padding:3px 10px;border-radius:999px;font-size:12.5px}.stage>.bv-canvas-row{flex:1 1 0;min-height:clamp(280px,50dvh,560px)}.figure-wrap{position:relative;flex:1;min-width:0;min-height:280px;display:flex;overflow:auto;align-items:normal;justify-content:normal;border-radius:12px;background:radial-gradient(circle at 1px 1px,rgba(22,24,29,.07) 1px,transparent 0) 0 0 / 16px 16px,var(--paper)}canvas{background:#fff;box-shadow:var(--shadow);border-radius:2px}.figure-wrap.canvas-mode{background:#fff;border-radius:8px}.figure-wrap.canvas-mode canvas{box-shadow:none;outline:1px dashed #cfd5de}.figure-box{position:relative;flex:none;margin:auto}.figure-box canvas{display:block}.figure-busy{position:absolute;top:10px;right:10px;z-index:7;display:inline-flex;align-items:center;gap:8px;padding:5px 10px;border:1px solid var(--line);border-radius:999px;background:#fffffff0;box-shadow:var(--shadow);font-size:12px;color:var(--muted);pointer-events:none}.bv-resize{position:absolute;z-index:5;min-height:0;padding:0;border:0;border-radius:2px;background:transparent}.bv-resize:hover,.bv-resize:focus-visible{background:#1f4e7929;border-color:transparent;outline:none}.bv-resize.x{top:12px;right:-5px;bottom:18px;width:10px;cursor:ew-resize}.bv-resize.y-left{left:8px;width:22%;max-width:130px;bottom:-5px;height:10px;cursor:ns-resize}.bv-resize.y-right{right:18px;width:22%;max-width:130px;bottom:-5px;height:10px;cursor:ns-resize}.bv-resize.xy{right:-3px;bottom:-3px;width:16px;height:16px;cursor:nwse-resize;border-right:2px solid var(--accent);border-bottom:2px solid var(--accent);border-radius:0 0 3px}.bv-resize-preview{position:absolute;top:0;left:0;z-index:6;pointer-events:none;border:1.5px dashed var(--accent);background:#1f4e790d}.bv-resize-preview span{position:absolute;right:6px;bottom:6px;padding:2px 6px;border-radius:4px;background:var(--accent);color:#fff;font-size:11px;font-weight:600;white-space:nowrap}.hold{display:inline-flex}.context-menu{position:fixed;z-index:20;display:flex;flex-direction:column;gap:2px;background:#fff;border:1px solid var(--line);border-radius:10px;padding:6px;box-shadow:0 12px 32px #10182829}.context-menu .hold,.context-menu button{width:100%}.context-menu button{border-color:transparent;text-align:left}.context-menu button:hover{background:#f1f4f8;border-color:transparent}.note-color input{width:28px;height:28px;padding:0;border:1px solid var(--line);background:#fff}.progress{height:3px;background:var(--accent-soft);border-radius:99px;overflow:hidden}.progress span{display:block;height:100%;background:var(--accent);transition:width .3s var(--ease)}.error{margin:0;padding:8px 12px;border:1px solid #f1c4cf;border-radius:8px;background:#fdf2f5;color:var(--danger);font-size:13px}.figure-results{display:flex;flex-direction:column;gap:12px;min-width:0}.figure-results:empty{display:none}.results-scroll{max-width:100%;overflow-x:auto;overscroll-behavior-x:contain}.result-block{display:flex;flex-direction:column;gap:8px;min-width:0;padding:12px 14px;background:#fff;border:1px solid var(--line);border-radius:12px}.result-head{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px}.result-head h3{font-size:13px;font-weight:600;margin-right:auto}.result-note{font-size:12px}.caption-block textarea{width:100%}.results{border-collapse:collapse;width:100%;background:#fff;font-variant-numeric:tabular-nums}.results th,.results td{border-bottom:1px solid var(--line-soft);text-align:left;padding:5px 8px;font-size:12px}.results th{font-size:11px;font-weight:700;letter-spacing:.04em;color:var(--muted);background:var(--paper-2);border-bottom-color:var(--line)}.results tbody tr:hover td{background:#fafbfc}.type-card.unfit{opacity:.62}.type-card .needs{font-size:11px;color:#8a5a00;font-style:normal}.plot-btn.unfit{opacity:.55}.plot-problem{margin:0;padding:8px 10px;border:1px solid var(--warn-line);border-radius:8px;background:var(--warn-bg);color:var(--warn-ink);font-size:13px}.level-editor .row{gap:6px}.level-note{margin:0;font-size:12px;color:#8a5a00}.level-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px;max-height:260px;overflow:auto}.level-row{display:grid;grid-template-columns:auto 28px minmax(80px,1fr) auto auto auto;align-items:center;gap:6px;font-size:13px}.level-row.is-hidden .level-label{text-decoration:line-through;color:var(--muted-2)}.level-row input[type=color]{width:28px;height:24px;min-height:24px;padding:0;border:1px solid var(--line);border-radius:4px}.level-row .level-label{min-width:0}.level-row small{color:var(--muted)}.chip .swatch{display:inline-block;width:10px;height:10px;border-radius:2px}.chip.eff input{width:64px}.figure-options .ref-add{gap:6px;align-items:center}.figure-options .ref-add input[type=number]{width:90px}.figure-options .ref-add input:not([type]){width:140px}.ref-list{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:6px;font-size:13px}.ref-list li{display:flex;gap:6px;align-items:center;padding:2px 6px;border:1px solid var(--line);border-radius:6px}.export-bar{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px;padding:8px 12px;background:#fff;border:1px solid var(--line);border-radius:10px}.rail .export-bar{padding:8px 0;border:0;background:none}.export-bar .export-label{font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.export-bar .export-png{display:inline-flex;gap:4px;align-items:center}.export-bar select{width:auto;min-height:26px;padding:2px 6px;font-size:12px}.study-notes{margin:0;padding-left:18px;font-size:13px;color:var(--ink-2)}.row.wrap{flex-wrap:wrap}.style-controls{display:flex;flex-direction:column;gap:8px;margin-top:14px;padding-top:12px;border-top:1px solid var(--line-soft)}.sc-row{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.sc-row .sc-field.sc-wide{flex:1 1 160px}.sc-unit{display:inline-flex;gap:2px;padding:2px;align-self:flex-end;background:#f3f5f8;border:1px solid var(--line);border-radius:8px}.sc-unit button{min-height:24px;border:0;background:transparent;color:var(--muted);font-weight:600;box-shadow:none}.sc-unit button.active{background:#fff;color:var(--ink);box-shadow:0 1px 2px #00000014}.sc-sides{grid-column:1 / -1;display:flex;flex-wrap:wrap;gap:4px 12px}.sc-group{border:1px solid var(--line);border-radius:9px;background:#fff}.sc-group>summary{cursor:pointer;list-style:none;padding:7px 10px;font-size:12.5px;font-weight:600;color:var(--ink-2);display:flex;align-items:center;justify-content:space-between}.sc-group>summary::-webkit-details-marker{display:none}.sc-group>summary:after{content:"";width:7px;height:7px;border-right:1.5px solid var(--muted);border-bottom:1.5px solid var(--muted);transform:rotate(45deg);transition:transform .15s ease}.sc-group[open]>summary:after{transform:rotate(-135deg)}.sc-group[open]>summary{border-bottom:1px solid var(--line-soft)}.sc-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;padding:10px}.sc-field{min-width:0}.sc-field.sc-wide,.sc-grid .sc-check,.sc-note{grid-column:1 / -1}.sc-input{display:flex;align-items:center;gap:4px}.sc-input input{width:100%}.sc-input small,.sc-input span{color:var(--muted);font-size:11px}.skeleton{display:block;border-radius:6px;background:linear-gradient(90deg,#eceff3,#f6f7f9,#eceff3 80%) 0 0 / 300% 100%;animation:bv-shimmer 1.6s ease-in-out infinite}.skeleton-stack{display:flex;flex-direction:column;gap:8px}.skeleton-line{height:12px}.skeleton-block{height:120px;border-radius:10px}.skeleton-table{display:grid;gap:6px;padding:12px 14px;background:#fff;border:1px solid var(--line);border-radius:12px}.skeleton-table .skeleton-line:first-child{width:30%;height:14px}@keyframes bv-shimmer{0%{background-position:100% 0}to{background-position:0 0}}.is-stale{opacity:.55;transition:opacity .2s ease}.amd-loader.bv-load-screen{z-index:60}.side-drawer{position:fixed;top:0;right:0;bottom:0;z-index:45;width:min(440px,94vw);display:flex;flex-direction:column;background:#fff;border-left:1px solid var(--line);box-shadow:-12px 0 32px #16181d29;transform:translate(100%);visibility:hidden;transition:transform .22s ease,visibility 0s linear .22s}.side-drawer.open{transform:none;visibility:visible;transition:transform .22s ease}.side-drawer:focus{outline:none}.side-scrim{position:fixed;inset:0;z-index:44;background:#16181d47;opacity:0;pointer-events:none;transition:opacity .2s ease}.side-scrim.show{opacity:1;pointer-events:auto}.side-body{flex:1 1 auto;min-height:0;overflow:auto;overscroll-behavior:contain;padding:12px 14px 18px;display:flex;flex-direction:column;gap:12px}.recipe-intro{font-size:12.5px;color:var(--muted);margin:0;line-height:1.5}.recipe-actions{display:flex;flex-wrap:wrap;gap:6px}.recipe-empty{padding:16px;border:1px dashed var(--line);border-radius:10px;text-align:center;color:var(--muted);font-size:13px}.recipe-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:0;counter-reset:recipe}.recipe-step{position:relative;display:grid;grid-template-columns:26px minmax(0,1fr);gap:2px 8px;padding:8px 0 10px;border-top:1px solid var(--line-soft)}.recipe-step:first-child{border-top:0}.recipe-num{grid-row:span 2;width:22px;height:22px;border-radius:50%;background:var(--accent-soft);color:var(--accent);font-size:11px;font-weight:700;display:grid;place-items:center;font-variant-numeric:tabular-nums}.recipe-step[data-kind=dataset] .recipe-num{background:var(--studio-soft);color:var(--studio)}.recipe-step[data-kind=map] .recipe-num,.recipe-step[data-kind=markers] .recipe-num{background:var(--accent);color:#fff}.recipe-step.future{opacity:.5}.recipe-title{display:flex;align-items:baseline;gap:8px;min-width:0}.recipe-title strong{font-size:13px;font-weight:600;color:var(--ink);min-width:0;overflow-wrap:anywhere}.recipe-title time{margin-left:auto;flex:none;font-size:11px;color:var(--muted-2);font-variant-numeric:tabular-nums;font-family:var(--mono)}.recipe-detail{font-size:12px;color:var(--muted);line-height:1.45;overflow-wrap:anywhere}.recipe-detail code,.recipe-params code{font-family:var(--mono);font-size:11px;color:var(--ink-2)}.recipe-params{margin:4px 0 0;padding:6px 8px;display:grid;grid-template-columns:auto minmax(0,1fr);gap:2px 10px;font-size:11.5px;background:var(--paper-2);border-radius:6px}.recipe-params dt{color:var(--muted)}.recipe-params dd{margin:0;color:var(--ink-2);overflow-wrap:anywhere;font-family:var(--mono);font-size:11px}.recipe-stages dd{font-family:inherit;font-size:11.5px;line-height:1.4}.recipe-step-tools{display:flex;gap:4px;margin-top:4px}.recipe-step-tools button{min-height:24px;padding:1px 8px;font-size:11.5px}.recipe-group{border:1px solid var(--line);border-radius:10px}.recipe-group>summary{cursor:pointer;padding:8px 10px;font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);list-style:none;display:flex;justify-content:space-between}.recipe-group>summary::-webkit-details-marker{display:none}.recipe-group[open]>summary{border-bottom:1px solid var(--line-soft)}.recipe-group>.recipe-list{padding:0 10px}.replay-plan{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}.replay-plan li{display:grid;grid-template-columns:70px minmax(0,1fr);gap:8px;align-items:baseline;padding:6px 8px;border-radius:7px;background:var(--paper-2);font-size:12px}.replay-plan .tag{font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase}.replay-plan .tag.apply{color:var(--studio)}.replay-plan .tag.skip{color:var(--muted-2)}.replay-plan .tag.warn{color:#8a5a00}.replay-plan .tag.done{color:var(--accent)}.replay-plan .tag.fail{color:var(--danger)}.replay-plan small{display:block;color:var(--muted)}.replay-box{display:flex;flex-direction:column;gap:8px;padding:12px;border:1px solid var(--accent-line);border-radius:12px;background:#fbfcfe}.replay-box h3{font-size:13px}.replay-verdict{margin:0;font-size:12.5px;font-weight:600}.replay-verdict.same{color:var(--studio)}.replay-verdict.differs{color:var(--danger)}.perf-host{min-height:120px}@media(max-width:1279px){.app:not(.data-mode){grid-template-columns:clamp(220px,22vw,280px) minmax(0,1fr)}.inspector-shell{position:fixed;top:0;right:0;bottom:0;z-index:35;width:min(360px,92vw);box-shadow:-12px 0 32px #16181d29;transform:translate(100%);visibility:hidden;transition:transform .22s ease,visibility 0s linear .22s}.inspector-shell.open{transform:none;visibility:visible;transition:transform .22s ease}.inspector-shell>.inspector{border-left:0}.drawer-scrim{display:block;position:fixed;inset:0;z-index:34;background:#16181d47;opacity:0;pointer-events:none;transition:opacity .2s ease}.drawer-scrim.show{opacity:1;pointer-events:auto}}@media(max-width:1023px){.app:not(.data-mode){grid-template-columns:minmax(0,1fr)}.rail-shell{position:fixed;top:0;left:0;bottom:0;z-index:35;width:min(340px,88vw);box-shadow:12px 0 32px #16181d29;transform:translate(-100%);visibility:hidden;transition:transform .22s ease,visibility 0s linear .22s}.rail-shell.open{transform:none;visibility:visible;transition:transform .22s ease}.rail-shell>.rail{border-right:0}.stage{padding:0 10px 12px}.stage-head{position:sticky;top:0;z-index:8;align-items:center;margin:0 -10px;padding:8px 10px 6px;background:var(--paper);border-bottom:1px solid var(--line)}.stage>.bv-canvas-row{flex:1 0 auto;min-height:max(300px,55dvh)}.plot-bar{flex-wrap:nowrap;overflow-x:auto;overscroll-behavior-x:contain;scrollbar-width:thin;-webkit-overflow-scrolling:touch}.plot-bar{padding-bottom:2px}.plot-bar>*{flex:none}.top .bioview-status{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.data-page{grid-template-columns:minmax(0,1fr);grid-template-rows:auto auto;align-content:start;overflow-y:auto;overscroll-behavior:contain}.data-side,.data-main{min-height:auto;overflow:visible}.data-main{overflow-x:auto}.data-side{border-right:0;border-bottom:1px solid var(--line)}.data-side .stack{flex-direction:row;flex-wrap:wrap}.data-side .stack>.hold>button{width:auto}.data-side,.data-main{padding:12px}.grid-scroll{height:60dvh;min-height:280px}.level-row{grid-template-columns:auto 28px minmax(60px,1fr) auto auto auto}.chooser-fields{grid-template-columns:repeat(auto-fill,minmax(170px,1fr))}}@media(pointer:coarse),(max-width:1023px){:is(.panel-shell,.stage,.data-page,.side-drawer,.amdl-card) :is(button:not(.bv-resize),select,input:not([type=checkbox]):not([type=radio]):not([type=color]):not([type=range]):not([type=file]),label.check,.chip){min-height:40px}.text-dock,.bv-strips>.strip{height:38px}:is(.text-dock,.bv-size) :is(select,input){height:30px;min-height:30px}:is(.panel-shell,.stage,.data-page,.side-drawer) input:is([type=checkbox],[type=radio]){width:20px;height:20px}:is(.panel-shell,.stage,.data-page) .note-color input{width:40px;height:40px}.text-dock .note-color input{width:30px;height:30px}:is(.panel-shell,.stage,.top) .tool-btn{min-height:0}.drawer-close{min-height:40px}}@media(prefers-reduced-motion:reduce){.rail-shell,.inspector-shell,.rail-shell.open,.inspector-shell.open,.drawer-scrim,.side-drawer,.side-drawer.open,.side-scrim{transition:none}.skeleton{animation:none}button,input,select,textarea,.progress span{transition:none}}.bv-strips{display:flex;flex-direction:column;background:#f6f7f9;border:1px solid var(--line);border-radius:8px;overflow:visible}.bv-strips>.strip{height:30px;padding:0 4px}.bv-strips>.text-dock+.strip{border-top:1px solid #e4e7ec}.text-dock{display:flex;align-items:center;gap:1px;height:30px;padding:0 6px;flex-wrap:nowrap;min-width:0;font-size:12px}.text-dock-name{padding:0 6px 0 2px;font-size:10.5px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}.text-dock-words{flex:0 1 200px;min-width:80px;height:22px;min-height:22px;padding:0 6px;border-radius:3px;font-size:12px}.text-dock select,.bv-size select{height:22px;min-height:22px;max-width:140px;padding:0 4px;border-radius:3px;font-size:12px}.text-dock .text-dock-size,.bv-size input{width:46px;height:22px;min-height:22px;padding:0 3px;border-radius:3px;font-size:12px;text-align:right}.text-dock-sep{width:1px;height:18px;margin:0 4px;background:#dde1e7;flex:none}.text-dock .note-color{display:inline-flex}.text-dock .note-color input{width:24px;height:22px;border-radius:3px}.text-dock .note-color.off{opacity:.38}.text-dock.idle .text-dock-words{background:#f1f3f6}.bv-size{display:inline-flex;align-items:center;gap:3px;font-size:12px;color:var(--muted)}.bv-unit{margin-left:1px}.bv-canvas-row{display:grid;grid-template-columns:36px minmax(0,1fr);gap:6px;min-height:clamp(280px,50dvh,560px)}.bv-canvas-row>.figure-wrap{min-height:0}.bv-tool-strip{align-self:start;padding:4px 0;background:#f6f7f9;border:1px solid var(--line);border-radius:8px}.stage-head{justify-content:space-between;align-items:center}.panel-toggle.tool-btn{min-height:0;padding:0;font-weight:400}.bv-plot-tabs{display:flex;flex-wrap:nowrap;gap:1px;overflow-x:auto;scrollbar-width:thin;padding:2px;background:#f3f4f7;border:1px solid var(--line);border-radius:6px}.bv-plot-tabs .plot-btn{min-height:24px;padding:1px 9px;border-radius:4px;border-color:transparent;background:transparent;font-size:12px}.bv-plot-tabs .plot-btn:hover{background:#e5e9ef}.bv-plot-tabs .plot-btn.active{background:#fff;border-color:var(--line);color:var(--accent);font-weight:600}.top-tools .tool-btn{position:relative;min-height:0;padding:0;font-weight:400}.top-tools .tool-btn .count{position:absolute;top:-5px;right:-7px;min-width:15px;padding:0 3px;line-height:15px;font-size:10px}.inspector.with-strip{display:grid;grid-template-columns:minmax(0,1fr) 36px;padding:0;overflow:hidden}.inspector-body{min-height:0;overflow:auto;overscroll-behavior:contain;padding:10px 12px 16px;font-size:12.5px}.inspector-strip{border-left:1px solid var(--line);background:#f6f7f9}.inspector-body h3{font-size:11px;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);margin:12px 0 4px}.inspector-body button,.inspector-body select,.inspector-body input:not([type=checkbox]):not([type=radio]):not([type=color]):not([type=range]){min-height:26px;font-size:12px}.amd-full .top{min-height:40px;padding-top:3px;padding-bottom:3px}
