/* Step-specific styles: columns, concepts, sources, build. */

/* ---------- 2. columns ---------- */
.sheet td.kind{width:190px}
.fmtbtn{width:22px;height:21px;margin-left:-4px;border:0;border-radius:3px;vertical-align:middle;background:var(--tag-red);color:var(--tag-red-ink);font:600 12px var(--mono);cursor:pointer}
.fmtbtn:hover{filter:brightness(.95)}
details.paste{margin-top:12px}
details.paste summary{cursor:pointer;color:var(--accent);font-size:13px}
details.paste textarea{width:100%;min-height:110px;margin-top:8px;border:1px solid var(--line);border-radius:6px;padding:8px 10px;font:12px var(--mono)}

/* ---------- 3. concepts ---------- */
.colname{display:flex;align-items:center;gap:4px;padding-left:8px}
.colname input[type=text]{flex:1;padding-left:6px;font-weight:500}
.kbtn{display:inline-flex;border:0;background:none;padding:2px;border-radius:4px;cursor:pointer}
.kbtn:hover{background:var(--hover)}
.kbtn:focus{outline:none;box-shadow:0 0 0 2px var(--accent-soft)}
.sortbtn{border:0;background:none;padding:0;font:inherit;color:inherit;cursor:pointer}
.sortbtn:hover,.sortbtn.on{color:var(--ink)}

/* ---------- 5. sources ---------- */
.sys-card{margin-bottom:18px;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.sys-hd{display:flex;align-items:center;gap:10px;padding:8px 4px 8px 0;border-bottom:1px solid var(--line)}
.sys-in{flex:1;border:0;background:transparent;font-size:16px;font-weight:600;padding:3px 6px;border-radius:5px}
.sys-in:focus{outline:none;background:var(--field)}
.sys-card .sheet td:first-child{width:45%}
.sys-fold{flex:none;width:24px;height:24px;border:0;background:transparent;border-radius:5px;color:var(--faint);font-size:16px;line-height:1;cursor:pointer;transform:rotate(90deg);transition:transform .15s}
.sys-fold:hover{background:var(--hover);color:var(--ink)}
.sys-card.folded .sys-fold{transform:none}
.sys-card.folded .sys-hd{border-bottom:0}
.sys-card .sheet td.mono{color:var(--muted);white-space:nowrap}
.sys-foot{display:flex;align-items:center;gap:10px;padding:2px 0;border-top:1px solid var(--line)}
.sys-foot .btn{border-color:transparent;color:var(--faint);background:transparent;padding:4px 8px}
.sys-foot .btn:hover{background:var(--hover);color:var(--ink)}
.tchip{display:inline-block;padding:2px 8px;border-radius:3px;font:500 11.5px var(--mono);white-space:nowrap;color:#fff}
.tchip.fact{background:var(--fact)} .tchip.dim{background:var(--dim)} .tchip.bridge{background:var(--bridge)}
.schip{display:inline-flex;align-items:center;gap:4px;padding:2px 4px 2px 8px;border-radius:3px;background:var(--tag-gray);color:var(--tag-gray-ink);font:12px var(--mono)}
.schip button{border:0;background:none;color:var(--faint);cursor:pointer;font-size:13px;line-height:1;padding:0 3px;border-radius:3px}
.schip button:hover{color:var(--fact);background:var(--fact-soft)}
.sheet.build td{vertical-align:top}
.sheet.build td:first-child{width:200px}

/* ---------- 6. build ---------- */
.prog{display:flex;align-items:center;gap:12px;margin:-2px 0 10px}
.prog-bar{flex:1;max-width:320px;height:6px;border-radius:4px;background:rgba(var(--ink-rgb),.08);overflow:hidden}
.prog-bar span{display:block;height:100%;background:var(--ok);transition:width .2s}
.sheet.buildlist .layer-row td{padding:14px 10px 4px;border-bottom:0;font-size:12px;font-weight:500;color:var(--faint)}
.sheet.buildlist td.act input{width:16px;height:16px;accent-color:var(--ok);cursor:pointer}
.sheet.buildlist td:nth-child(2){width:240px;white-space:nowrap}
.bname{font:600 12.5px var(--mono)}
.bname.dim{color:var(--dim)} .bname.bridge{color:var(--bridge)} .bname.fact{color:var(--fact)} .bname.mart{color:var(--ok)}
.sheet.buildlist tr.is-built .bname{opacity:.55;text-decoration:line-through}
.bname.int{color:var(--muted)}
/* intermediate (hand-added, ephemeral) */
.sheet.intlist tr.int-row td{vertical-align:top}
.sheet.intlist td:first-child{width:240px}
.eph-tag{margin-left:8px;font-size:11px;color:var(--faint);font-style:italic}
.int-wire{position:relative;padding-right:36px!important}
.int-wire > .trash{position:absolute;top:6px;right:6px;opacity:0}
.int-row:hover .int-wire > .trash,.int-wire > .trash:focus-visible{opacity:1}
.sheet input.iname{width:100%;box-sizing:border-box;border:1px dashed rgba(var(--ink-rgb),.28);border-radius:4px;padding:3px 6px;background:transparent}
.sheet input.iname:focus{border-style:solid;border-color:var(--accent);outline:0}
.eph{display:block;margin:4px 0 0 7px;font-size:11px;color:var(--faint);font-style:italic}
.int-wire .iw{display:flex;align-items:center;flex-wrap:wrap;gap:6px;min-height:26px}
.int-wire .iw-l{width:38px;font-size:12px;color:var(--faint)}
.int-wire .addbtn{margin-top:0}
.int-wire .inote{margin-top:2px}
.add-int{margin-top:12px}
.empty-note .linkbtn,.cfill .linkbtn,.setup-card .linkbtn{font-size:inherit;color:var(--accent);text-decoration:underline;text-underline-offset:2px}

/* column notes: quiet until hovered or filled */
.sheet input.cnote{font-size:13px;color:var(--muted)}
.sheet input.cnote::placeholder{color:transparent}
.sheet tr:hover input.cnote::placeholder,.sheet input.cnote:focus::placeholder{color:var(--faint)}

/* grain tag next to the concept type */
.type-cell{display:flex;align-items:center;gap:6px;padding-right:8px}
.grain-chip{border:0;background:var(--soft);border-radius:4px;padding:2px 7px;font:inherit;font-size:12.5px;color:var(--muted);cursor:pointer;white-space:nowrap}
.grain-chip b{color:var(--ink);font-weight:600}
.grain-chip:hover{background:var(--hover);color:var(--ink)}
.grain-chip.need{background:var(--tag-yellow);color:var(--tag-yellow-ink);font-weight:500}
.grain-chip.ghost{background:transparent;color:var(--faint);opacity:0}
.sheet tr:hover .grain-chip.ghost,.grain-chip.ghost:focus-visible{opacity:1}
.dlg-grain{display:flex;align-items:center;gap:8px}
.dlg-grain span{white-space:nowrap;color:var(--muted);font-size:14px}
.sheet td.fit{width:1%;white-space:nowrap}
.sheet td.name-col{width:190px}
.plan-hd{display:flex;align-items:center;gap:10px}
.plan-nosrc{margin:-4px 0 14px}
.plan-hd .addnode{font-size:14px;font-weight:400}

/* List Columns: reuse a matching warehouse column, or which deliverables share one (columns.js) */
.colname-cell{display:flex;align-items:center;gap:6px;padding-right:8px}
.colinfo{flex:none;display:flex}
.colinfo:empty{display:none}
.colmatch{display:flex;align-items:center;gap:4px;font-size:12px;color:var(--muted);white-space:nowrap}
.colmatch-btn{border:1px solid var(--accent-soft);background:var(--accent-soft);color:var(--accent);border-radius:4px;padding:1px 7px;font:inherit;font-size:12px;cursor:pointer}
.colmatch-btn:hover{border-color:var(--accent)}
.colmatch-btn.ghost{background:transparent;border-color:transparent;color:var(--faint)}
.colmatch-btn.ghost:hover{color:var(--ink);background:var(--hover)}
.colshared{font-size:11.5px;color:var(--faint);white-space:nowrap}
.sheet tr.outside{opacity:.45}
.plan-toggle{margin-left:auto;font-weight:400}

/* Source Tables: optional snapshots per table (sources.js), shown before the staging name */
.x.snap{display:inline-grid;place-items:center;padding:5px;opacity:0}
tr:hover .x.snap,.x.snap:focus-visible{opacity:.6}
.x.snap:hover{opacity:1;color:var(--accent);background:var(--accent-soft)}
.x.snap.on{opacity:1;color:var(--accent)}
.snp-name{color:var(--accent)}
.snp-arrow{margin:0 6px;color:var(--faint)}
.bname.snp{color:var(--accent)}
.sys-card .sheet td.act{width:64px;white-space:nowrap}
