:root{--bg:#f6f7f9;--panel:#fff;--text:#1b1f24;--muted:#5f6b7a;--border:#dde1e6;--accent:#2f6fdb;--accent-text:#fff;--hover:#eef2f8;--selected:#dbe7fb;--danger:#c0392b;--done:#1e8e3e;--exact:#1e8e3e;--saved:#2f6fdb;--cluster:#8e44ad;--shape:#c77700;--llm:#0b7285;--manual:#1b1f24;--dim:#c6ccd4;--uncovered:#c2255c;--preview-base:#d3d8de;--preview-mapped:#6b7480;--preview-unmapped:#d32f2f;--preview-picked:#d9a400;--grid:#eef0f3;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root{--bg:#121418;--panel:#1b1e24;--text:#e6e9ee;--muted:#97a1ad;--border:#2d323b;--accent:#5b8ff0;--accent-text:#0b0d10;--hover:#232833;--selected:#253552;--danger:#e0695c;--done:#4cc26d;--exact:#4cc26d;--saved:#5b8ff0;--cluster:#b784d6;--shape:#e6a23c;--llm:#3bc9db;--manual:#e6e9ee;--dim:#3a404b;--uncovered:#f06595;--preview-base:#353b45;--preview-mapped:#9aa3ae;--preview-unmapped:#ff4d4d;--preview-picked:#ffd43b;--grid:#1f232a;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);font:14px/1.4 system-ui,-apple-system,Segoe UI,Roboto,sans-serif}a{color:var(--accent)}button,input,select{font:inherit;color:inherit}button{background:var(--panel);border:1px solid var(--border);cursor:pointer;border-radius:6px;padding:5px 10px}button:hover:not(:disabled){background:var(--hover)}button:disabled{opacity:.5;cursor:default}button.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-text)}button.primary:hover:not(:disabled){background:color-mix(in srgb, var(--accent) 85%, var(--text))}button.danger{color:var(--danger)}input[type=text],input[type=email],input[type=search],select{background:var(--panel);border:1px solid var(--border);border-radius:6px;padding:5px 8px}.app{flex-direction:column;height:100%;display:flex}.topbar{background:var(--panel);border-bottom:1px solid var(--border);align-items:center;gap:12px;padding:8px 16px;display:flex}.topbar h1{margin:0;font-size:16px}.topbar .spacer{flex:1}.page{flex:1;padding:16px;overflow:auto}.cards{grid-template-columns:repeat(auto-fit,minmax(340px,1fr));gap:16px;display:grid}.card{background:var(--panel);border:1px solid var(--border);border-radius:8px;padding:14px 16px}.card h2{margin:0 0 10px;font-size:15px}.muted{color:var(--muted)}.small{font-size:12px}.row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.list{margin:0;padding:0;list-style:none}.list li{border-top:1px solid var(--border);padding:6px 0}.list li:first-child{border-top:none}.ok{color:var(--done)}.faces{flex-direction:column;gap:4px;margin-top:6px;display:flex}.error{color:var(--danger)}.drop{border:1.5px dashed var(--border);text-align:center;color:var(--muted);border-radius:8px;padding:14px}.drop.over{border-color:var(--accent);background:var(--hover)}.editor{flex:1;grid-template-rows:auto 1fr;grid-template-columns:minmax(300px,1.1fr) minmax(260px,.9fr) minmax(340px,1.4fr);gap:0;height:100%;min-height:0;display:grid}.project-bar{border-bottom:1px solid var(--border);background:var(--panel);white-space:nowrap;grid-column:1/-1;align-items:center;gap:8px;min-width:0;padding:8px 12px;display:flex}.project-title{text-overflow:ellipsis;white-space:nowrap;min-width:80px;color:inherit;text-align:left;cursor:text;background:0 0;border:1px solid #0000;border-radius:4px;flex:0 auto;padding:2px 6px;font-family:inherit;font-size:16px;overflow:hidden}.project-title:hover,.project-title:focus-visible{border-color:var(--border)}.project-title .rename{opacity:0;margin-left:6px;font-size:13px}.project-title:hover .rename,.project-title:focus-visible .rename{opacity:.6}.project-title-edit{flex:0 360px;min-width:160px;font-size:16px;font-weight:600}.project-bar .spacer{flex:1 1 0}.project-bar .status{text-overflow:ellipsis;flex:0 auto;min-width:0;overflow:hidden}.coverage{font-variant-numeric:tabular-nums;align-items:center;gap:6px;display:inline-flex}.coverage-pop{white-space:normal;flex-direction:column;gap:4px;min-width:320px;padding:10px 12px;display:flex}.pane{border-right:1px solid var(--border);background:var(--panel);flex-direction:column;min-height:0;display:flex}.pane-head{border-bottom:1px solid var(--border);white-space:nowrap;align-items:center;gap:6px;padding:8px 10px;display:flex}.pane-head input[type=search]{flex:auto;width:100%;min-width:60px}.filter-chips{border-bottom:1px solid var(--border);background:var(--grid);flex-wrap:wrap;gap:6px;padding:5px 10px;display:flex}.fold-mark{color:var(--muted);text-align:center;flex:none;width:14px}.row-status{align-items:center;gap:4px;display:flex}.pane-body{flex:1;min-height:0;overflow:auto}.trow{cursor:pointer;border-bottom:1px solid var(--grid);grid-template-columns:18px minmax(0,1fr) minmax(0,1fr) auto;align-items:center;gap:6px;padding:3px 10px;display:grid}.trow:hover{background:var(--hover)}.trow.selected{background:var(--selected)}.trow.linked,.srow.linked{background:var(--selected);box-shadow:inset 3px 0 0 var(--accent)}.srow[draggable=true]{cursor:grab}.trow.child{padding-left:30px}.trow.picked,.srow.picked{box-shadow:inset 3px 0 0 var(--accent);background:var(--selected)}.stack-mark{border:1px solid var(--border);color:var(--muted);white-space:nowrap;border-radius:8px;padding:0 4px;font-size:11px}.stack-list{flex-wrap:wrap;align-items:center;gap:4px 10px;display:flex}.stack-item{align-items:center;gap:2px;display:inline-flex}.stack-dialog{border:1px solid var(--border);background:var(--panel);width:min(460px,92vw);color:var(--text);border-radius:8px;padding:16px}.stack-dialog::backdrop{background:#00000073}.stack-dialog .suggestions-foot{border-top:0;padding:12px 0 0}.stack-dialog h2{margin:0 0 8px;font-size:16px}.trow.grandchild{padding-left:48px}.strand-tag{white-space:nowrap}.trow.dragover{outline:2px solid var(--accent);outline-offset:-2px}.name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.group-name{font-weight:600}.mapped{align-items:center;gap:2px;min-width:0;display:flex}.mapped-text{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.unmap{color:var(--muted);cursor:pointer;background:0 0;border:none;border-radius:3px;flex:none;padding:0 4px;font-size:14px;line-height:1}.trow .clear-all{visibility:hidden}.trow:hover .clear-all,.trow.selected .clear-all,.trow .clear-all:focus-visible{visibility:visible}.unmap:hover:not(:disabled){color:var(--danger);background:var(--hover)}button.link{color:var(--accent);cursor:pointer;font:inherit;background:0 0;border:none;padding:0;text-decoration:underline}.badge{white-space:nowrap;border:1px solid;border-radius:10px;padding:0 7px;font-size:11px}.o-exact{color:var(--exact)}.o-saved,.o-xmap{color:var(--saved)}.o-cluster{color:var(--cluster)}.o-shape{color:var(--shape)}.o-llm{color:var(--llm)}.o-manual{color:var(--manual)}.badge.quiet{color:var(--muted);border-color:var(--border)}.srow{cursor:pointer;border-bottom:1px solid var(--grid);justify-content:space-between;gap:8px;padding:3px 10px;display:flex}.srow:hover{background:var(--hover)}.srow.used .name,.srow.used .count,.done-mark{color:var(--done)}.srow.current{background:var(--selected)}.srow .count{color:var(--muted);white-space:nowrap;font-variant-numeric:tabular-nums}.inspector{border-bottom:1px solid var(--border);flex-direction:column;flex:none;gap:4px;height:136px;padding:8px 10px;display:flex;overflow:auto}.inspector p{margin:0}.inspector-head{align-items:center;gap:8px;display:flex}.inspector-head h3{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;margin:0;font-size:14px;overflow:hidden}.inspector-actions{margin-top:auto}.preview-wrap{flex-direction:column;flex:1;min-height:0;display:flex}.preview-canvas{background:var(--bg);flex:1;min-height:160px;position:relative;overflow:hidden}.preview-canvas canvas{display:block}.zoom-controls{opacity:.92;gap:2px;display:flex;position:absolute;top:6px;right:6px}.zoom-controls button{min-width:26px;padding:1px 8px;font-size:12px}.preview-hover{color:var(--text)}.preview-title{color:var(--muted);border-top:1px solid var(--border);padding:4px 10px;font-size:12px}.legend{border-top:1px solid var(--border);flex-wrap:wrap;gap:4px 12px;padding:6px 10px;font-size:12px;display:flex}.swatch{color:var(--text)}.swatch:before{content:"■ "}.swatch.done:before{color:var(--preview-mapped)}.swatch.uncovered:before{color:var(--preview-unmapped)}.swatch.selection:before{color:var(--accent)}.legend.inline{border:none;margin-left:auto;margin-right:12px;padding:0}.progress{background:var(--grid);border-radius:3px;width:120px;height:6px;display:inline-block;overflow:hidden}.progress>div,.progress>span{background:var(--done);height:100%;display:block}@media (max-width:1000px){.editor{grid-template-rows:auto;grid-template-columns:1fr;height:auto}.pane{border-right:none;border-bottom:1px solid var(--border);min-height:360px}}.block-head{cursor:pointer;background:var(--grid);border-bottom:1px solid var(--border);-webkit-user-select:none;user-select:none;align-items:center;gap:6px;padding:4px 10px;font-weight:600;display:flex}.block-head:hover{background:var(--hover)}.block-count{color:var(--muted);font-variant-numeric:tabular-nums;margin-left:auto;font-size:12px;font-weight:400}.block-head .name{flex:1;min-width:0}.focus-dialog{border:1px solid var(--border);background:var(--panel);width:min(1400px,94vw);height:min(900px,90vh);color:var(--text);border-radius:8px;padding:0}.focus-dialog[open]{flex-direction:column;display:flex}.focus-dialog::backdrop{background:#00000073}.focus-head{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:8px 12px;display:flex}.focus-previews{border-bottom:1px solid var(--border);grid-template-columns:1fr 1fr;height:38%;min-height:180px;display:grid}.focus-preview{border-right:1px solid var(--border);min-height:0;display:flex}.focus-preview:last-child{border-right:none}.focus-empty{margin:auto}.focus-cols{flex:1;grid-template-columns:1fr 1fr;min-height:0;display:grid}.focus-col{border-right:1px solid var(--border);flex-direction:column;gap:6px;min-height:0;padding:8px 12px;display:flex}.focus-col:last-child{border-right:none}.focus-list{flex:1;min-height:0;overflow:auto}.focus-row{border-bottom:1px solid var(--grid);cursor:pointer;align-items:center;gap:8px;padding:3px 4px;display:flex}.focus-row.member{color:var(--muted);font-size:13px}.focus-row.locked{background:var(--selected);box-shadow:inset 3px 0 0 var(--accent)}.fold{width:18px;color:var(--muted);cursor:pointer;text-align:center;background:0 0;border:none;flex:none;padding:0;font-size:12px}.focus-row.dim{opacity:.5}.focus-row.dragover{outline:2px solid var(--accent);outline-offset:-2px}.focus-row[draggable=true]{cursor:grab}.focus-row .name{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.chips{flex-wrap:wrap;justify-content:flex-end;gap:4px;max-width:60%;display:flex}.chip{border:1px solid var(--border);background:var(--bg);white-space:nowrap;border-radius:10px;align-items:center;gap:2px;padding:0 2px 0 8px;font-size:12px;display:inline-flex}button.quiet{background:0 0;border-color:#0000}button.quiet:hover:not(:disabled){border-color:var(--border)}button.quiet.ok{color:var(--done)}button.quiet.error{color:var(--danger)}button.icon{min-width:30px;padding:4px 8px}button.active{border-color:var(--accent);color:var(--accent)}.caret{color:var(--muted);font-size:10px}.menu{flex:none;position:relative}.menu-pop{z-index:20;background:var(--panel);border:1px solid var(--border);white-space:normal;border-radius:8px;min-width:220px;padding:4px;position:absolute;top:calc(100% + 4px);box-shadow:0 6px 24px #0000002e}.menu-pop.right{right:0}.menu-pop.left{left:0}.menu-pop>button,.menu-item{text-align:left;width:100%;color:var(--text);background:0 0;border:none;border-radius:6px;padding:6px 10px;text-decoration:none;display:block}.menu-pop>button:hover:not(:disabled),.menu-item:hover{background:var(--hover)}.menu-pop>button.danger{color:var(--danger)}.hint{color:var(--muted);font-size:12px;display:block}.menu-form{flex-direction:column;gap:8px;min-width:260px;padding:8px 10px;display:flex}.check{align-items:center;gap:6px;display:flex}.check.disabled{color:var(--muted)}.field{flex-direction:column;gap:4px;display:flex}.field>span:first-child{color:var(--muted);font-size:12px}.button-like{background:var(--panel);border:1px solid var(--border);cursor:pointer;color:var(--text);border-radius:6px;padding:5px 10px;text-decoration:none;display:inline-block}.button-like:hover{background:var(--hover)}button.wide{width:100%}.side-panel{border:none;border-left:1px solid var(--border);background:var(--panel);width:min(520px,96vw);height:100vh;max-height:100vh;color:var(--text);margin:0 0 0 auto;padding:0}.side-panel[open]{flex-direction:column;display:flex}.side-panel::backdrop{background:#00000059}.panel-head{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:10px 16px;display:flex}.panel-head h2{margin:0;font-size:16px}.panel-body{flex:1;padding:4px 16px 16px;overflow:auto}.panel-body section{border-bottom:1px solid var(--grid);flex-direction:column;align-items:flex-start;gap:8px;padding:12px 0;display:flex}.panel-body section .field,.panel-body section .wide{align-self:stretch}.panel-body h3{margin:0;font-size:14px}.panel-body p{margin:0}.export-item{border-top:1px solid var(--grid);align-self:stretch;padding:6px 0}.build-row{flex-wrap:wrap;align-items:center;gap:8px 16px;display:flex}.build-after{flex-wrap:wrap;gap:4px 14px;display:flex}.export-head{align-items:center;gap:8px;min-width:0;display:flex}.export-head a{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.export-head .spacer{flex:1}button.trash{color:var(--muted)}button.trash:not(:disabled):hover{color:var(--danger)}.export-item pre{white-space:pre-wrap;margin:4px 0 0}.cards.two{grid-template-columns:repeat(auto-fit,minmax(380px,1fr))}.card h2{align-items:center;gap:8px;display:flex}.step{background:var(--selected);width:22px;height:22px;color:var(--accent);border-radius:50%;place-items:center;font-size:12px;display:inline-grid}.table-wrap{overflow-x:auto}.table{border-collapse:collapse;width:100%}.table th{text-align:left;color:var(--muted);border-bottom:1px solid var(--border);padding:6px 8px;font-size:12px;font-weight:600}.table td{border-bottom:1px solid var(--grid);vertical-align:middle;padding:8px}.table td.seq{text-overflow:ellipsis;white-space:nowrap;max-width:420px;overflow:hidden}.nowrap{white-space:nowrap}.table td.actions{text-align:right;width:1%}.menu>button{white-space:nowrap}.menu>button.icon .caret{display:none}:root{--scrollbar-clear:18px}.pane-body,.focus-list,.inspector,.panel-body,.table-wrap{scrollbar-gutter:stable}.trow,.srow,.block-head,.focus-row,.inspector{padding-right:var(--scrollbar-clear)}.panel-body{padding-right:calc(var(--scrollbar-clear) + 4px)}.suggestions-dialog{border:1px solid var(--border);background:var(--panel);width:min(900px,94vw);height:min(780px,88vh);color:var(--text);border-radius:8px;padding:0}.suggestions-dialog[open]{flex-direction:column;display:flex}.suggestions-dialog::backdrop{background:#00000073}.suggestions-tools{border-bottom:1px solid var(--border);align-items:center;gap:6px;padding:8px 16px;display:flex}.suggestions-tools input[type=search]{flex:1}.suggestions-body{scrollbar-gutter:stable;min-height:0;padding:4px var(--scrollbar-clear) 8px 16px;flex:1;overflow:auto}.suggestions-group{background:var(--panel);border-bottom:1px solid var(--border);z-index:1;padding:10px 0 4px;position:sticky;top:0}.suggestion{border-bottom:1px solid var(--grid);cursor:pointer;grid-template-columns:20px minmax(0,1fr) 16px minmax(0,1.2fr) auto;align-items:center;gap:2px 8px;padding:4px 0;display:grid}.suggestion.off .target,.suggestion.off .source{color:var(--muted);text-decoration:line-through}.suggestion .target,.suggestion .source{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.suggestion .arrow,.suggestion .was{color:var(--muted)}.suggestion .meta{justify-content:flex-end;align-items:center;gap:6px;display:flex}.suggestion .reason{text-overflow:ellipsis;white-space:nowrap;grid-column:2/-1;overflow:hidden}.suggestions-foot{border-top:1px solid var(--border);align-items:center;gap:8px;padding:10px 16px;display:flex}.suggestions-foot .spacer{flex:1}.group-dialog{border:1px solid var(--border);background:var(--panel);width:min(1100px,95vw);height:min(820px,90vh);color:var(--text);border-radius:8px;padding:0}.group-dialog[open]{flex-direction:column;display:flex}.group-dialog::backdrop{background:#00000073}.group-cols{flex:1;grid-template-columns:1fr 1fr;min-height:0;display:grid}.group-col{border-right:1px solid var(--border);flex-direction:column;gap:8px;min-height:0;padding:10px 16px;display:flex}.group-col:last-child{border-right:none}.row.nowrap{flex-wrap:nowrap}.group-list,.member-list{scrollbar-gutter:stable;border:1px solid var(--grid);border-radius:6px;flex:1;min-height:0;overflow:auto}.group-pick,.member{padding:3px var(--scrollbar-clear) 3px 6px;border-bottom:1px solid var(--grid);align-items:center;gap:6px;display:flex}.group-pick .name,.member .name{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.group-pick[draggable=true]{cursor:grab}.group-pick.added .name{color:var(--muted)}.member{cursor:grab;background:var(--panel)}.member .handle{color:var(--muted);letter-spacing:-2px}.member .index{text-align:right;font-variant-numeric:tabular-nums;width:22px}.member.dragover{box-shadow:inset 0 2px 0 var(--accent)}.member-list.dragover-end{box-shadow:inset 0 -2px 0 var(--accent)}.member-empty{margin:0;padding:16px}.group-preview-legend{color:var(--muted);gap:12px;font-size:12px;display:flex}.swatch.picked:before{color:var(--preview-picked)}.group-preview{border:1px solid var(--grid);border-radius:6px;flex:0 0 34%;min-height:140px;display:flex;overflow:hidden}.badge.own{margin-left:6px;font-weight:400}.preview-title .menu{display:inline-block}.preview-title .menu>button.link{padding:0 2px;font-size:12px}.donor-none{border-top:1px solid var(--border);padding:4px 10px}.donor-none .menu{display:inline-block}.effect-strip{grid-template-columns:fit-content(12em) 1fr auto;align-items:center;gap:6px;margin-top:4px;display:grid}.effect-strip-label{text-overflow:ellipsis;white-space:nowrap;color:var(--muted);overflow:hidden}.effect-strip svg{width:100%;height:12px;display:block}.effect-strip-bg{fill:var(--grid)}.effect-strip-bar{fill:var(--accent)}button.lost{color:var(--danger)}.lost-list{max-height:240px;margin:6px 0 10px;padding-left:18px;overflow:auto}
