/* 软件地图：项目头部的数据源入口；任务图画布侧栏里的车站 / 道岔详情、意图看板、事情卡（10-16 晚起地图画在任务图的画布上） */

/* ---------- 数据源入口：项目头部固定位置 ---------- */
.sm-source { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; padding: 6px 10px; border-radius: var(--radius-ctl);
  background: var(--accent-soft); border: 1px solid color-mix(in srgb, var(--accent) 30%, transparent); }
.sm-source-label { font-size: 12px; font-weight: 600; color: var(--accent); margin-right: 2px; }
.sm-src-link { font-size: 12px; color: var(--accent); text-decoration: none; padding: 2px 6px; border-radius: 6px; }
.sm-src-link:hover { background: var(--fill-hover); }
.ws-head-actions { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }

/* ---------- 状态色（任务图与弹窗里都用） ---------- */
.tg-board, .modal { --s-done: var(--success); --s-doing: var(--accent); --s-todo: var(--warning); --s-gap: var(--danger); --s-dropped: var(--text-3); --s-empty: var(--text-3);
  --v-must: #C2362B; --v-later: #B26A12; --v-skip: #7A7A80; --v-open: #6B4FBB; --v-cond: #2C6E8F; }
.sm-dot { display: inline-block; width: 8px; height: 8px; border-radius: 50%; background: var(--s-empty); flex: none; }
.sm-dot.s-done { background: var(--s-done); } .sm-dot.s-doing { background: var(--s-doing); } .sm-dot.s-todo { background: var(--s-todo); }
.sm-dot.s-gap { background: transparent; border: 2px solid var(--s-gap); width: 6px; height: 6px; } .sm-dot.s-dropped { background: var(--s-dropped); }
.sm-meter { display: block; height: 4px; border-radius: 2px; background: var(--fill); overflow: hidden; min-width: 48px; }
.sm-meter > i { display: block; height: 100%; background: var(--s-done); border-radius: 2px; }

/* ---------- 道岔 ---------- */
.sm-diamond { display: inline-block; width: 14px; height: 14px; transform: rotate(45deg); background: var(--v-open); border-radius: 2px; flex: none; margin: 4px 4px 0; }
.sm-diamond-sm { width: 9px; height: 9px; margin: 0 6px 0 2px; }
.sm-pending { color: var(--v-open); font-weight: 600; }
.sm-switch-acts { display: flex; gap: 6px; flex-wrap: wrap; }
.sm-suggest summary { font-size: 12px; color: var(--accent); cursor: pointer; }
.sm-suggest p { margin: 4px 0; font-size: 12px; }

/* ---------- 事情卡（收起时只看标题与定性） ---------- */
.sm-card { border-radius: 10px; background: var(--surface); border: 1px solid var(--sep); border-left: 4px solid var(--v-open); padding: 8px 10px; font-size: 12.5px; display: grid; gap: 4px; }
.sm-card.v-must { border-left-color: var(--v-must); } .sm-card.v-later { border-left-color: var(--v-later); } .sm-card.v-skip { border-left-color: var(--v-skip); } .sm-card.v-cond { border-left-color: var(--v-cond); }
.sm-card.off { opacity: .45; filter: grayscale(1); }
.sm-card.linked { box-shadow: 0 0 0 2px var(--v-open); }
.sm-card header { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; }
.sm-card header b { font-size: 13px; }
.sm-card-path { font-size: 11px; color: var(--text-2); }
.sm-card-compact { padding: 0; }
.sm-card-open { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; width: 100%; border: 0; background: transparent; padding: 8px 10px; font: inherit; text-align: left; cursor: pointer; color: var(--text-1); }
.sm-card-open b { font-size: 13px; flex: 1 1 100%; }
.sm-card-open i { font-style: normal; font-size: 11.5px; color: var(--accent); margin-left: auto; }
.sm-verdict { font-size: 11px; font-weight: 600; border-radius: 999px; padding: 1px 8px; color: #fff; background: var(--v-open); white-space: nowrap; }
.sm-verdict.v-must { background: var(--v-must); } .sm-verdict.v-later { background: var(--v-later); } .sm-verdict.v-skip { background: var(--v-skip); } .sm-verdict.v-cond { background: var(--v-cond); }
.sm-off-tag { font-size: 11px; color: var(--text-2); border: 1px solid var(--sep-strong); border-radius: 999px; padding: 0 6px; }
.sm-intent { display: grid; grid-template-columns: auto 1fr; gap: 3px 8px; margin: 0; }
.sm-intent dt { color: var(--text-2); font-size: 11.5px; white-space: nowrap; padding-top: 1px; }
.sm-intent dd { margin: 0; overflow-wrap: anywhere; }
.sm-clamp { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.sm-review { margin-top: 2px; color: var(--v-open); }
.sm-saved-by { color: var(--v-open); font-size: 11.5px; margin-top: 2px; }
.sm-dep { display: inline-flex; align-items: center; border: 0; background: transparent; padding: 0; font: inherit; color: var(--v-open); cursor: pointer; text-align: left; }
.sm-card-toggle { justify-self: start; border: 0; background: transparent; color: var(--accent); font: inherit; font-size: 12px; cursor: pointer; padding: 0; }
.sm-card-tasks { margin: 0; padding-left: 18px; display: grid; gap: 4px; }
.sm-card-tasks button, .sm-panel-tasks button { border: 0; background: transparent; padding: 0; font: inherit; text-align: left; color: var(--text-1); cursor: pointer; }
.sm-card-tasks button:hover, .sm-panel-tasks button:hover { color: var(--accent); }
.sm-accept { font-size: 11.5px; color: var(--text-2); }
.sm-tstat { display: inline-block; font-size: 10.5px; border-radius: 4px; padding: 0 4px; margin-right: 4px; background: var(--fill); color: var(--text-2); }
.sm-tstat.t-done { background: color-mix(in srgb, var(--s-done) 18%, transparent); color: var(--s-done); }
.sm-tstat.t-in_progress, .sm-tstat.t-review { background: var(--accent-soft); color: var(--accent); }

/* ---------- 车站详情（任务图侧栏） ---------- */
.sm-panel-path { font-size: 12px; color: var(--text-2); }
.sm-panel-status { font-weight: 600; }
.sm-panel-status.s-done { color: var(--s-done); } .sm-panel-status.s-doing { color: var(--s-doing); } .sm-panel-status.s-todo { color: var(--s-todo); } .sm-panel-status.s-gap { color: var(--s-gap); }
.sm-panel-note { margin: 0; color: var(--text-1); background: var(--bg-page); border-radius: 8px; padding: 6px 8px; }
.sm-panel-row { display: flex; flex-wrap: wrap; gap: 4px 6px; align-items: center; font-size: 12px; }
.sm-panel-row > span { color: var(--text-2); }
.sm-panel-row button { border: 1px solid var(--sep); background: var(--surface); border-radius: 6px; font: inherit; font-size: 12px; padding: 1px 6px; cursor: pointer; }
.sm-panel-row em { color: var(--text-2); font-style: normal; }
.sm-panel-ext { font-size: 12px; display: grid; gap: 3px; border-left: 3px dashed var(--accent); padding-left: 8px; }
.sm-panel-src code { font-size: 11px; overflow-wrap: anywhere; }
.sm-panel-tasks { list-style: none; margin: 0; padding: 0; display: grid; gap: 6px; }
.sm-panel-tasks li { display: grid; gap: 2px; padding-bottom: 6px; border-bottom: 1px solid var(--sep); }
.sm-task-meta { font-size: 11.5px; color: var(--text-2); }
.linklike { border: 0; background: transparent; color: var(--accent); padding: 0; font: inherit; cursor: pointer; }
.sm-panel-acts { display: flex; flex-wrap: wrap; gap: 6px; }

/* ---------- 动线跑通、未挂载任务（意图看板下方） ---------- */
.sm-flows, .sm-unmounted { margin-top: 16px; background: var(--surface); border-radius: var(--radius-card); border: 1px solid var(--sep); padding: 12px 14px; }
.sm-flows h3, .sm-unmounted h3 { margin: 0 0 4px; font-size: 15px; }
.sm-flows h3 span { font-size: 12px; color: var(--text-2); font-weight: 400; margin-left: 6px; }
.sm-flowgroup { border-top: 1px solid var(--sep); padding: 6px 0; }
.sm-flowgroup summary { display: flex; align-items: center; gap: 10px; cursor: pointer; font-size: 13px; }
.sm-flowgroup summary span { color: var(--text-2); font-size: 12px; }
.sm-flowgroup summary .sm-meter { width: 120px; }
.sm-flow { display: flex; gap: 8px; align-items: flex-start; padding: 4px 0 4px 8px; font-size: 12px; }
.sm-flow-mark { flex: none; min-width: 34px; font-weight: 700; color: var(--text-2); }
.sm-flow.runs .sm-flow-mark { color: var(--s-done); }
.sm-flow-chain { display: flex; flex-wrap: wrap; align-items: center; gap: 2px 4px; }
.sm-flow-chain i { color: var(--text-3); font-style: normal; }
.sm-chain { display: inline-flex; align-items: center; gap: 4px; border: 0; background: transparent; padding: 0 2px; font: inherit; font-size: 12px; cursor: pointer; color: var(--text-1); }
.sm-unmounted > div { display: flex; gap: 8px; align-items: center; font-size: 12.5px; padding: 3px 0; }
.sm-unmounted button:first-child { border: 0; background: transparent; padding: 0; font: inherit; text-align: left; cursor: pointer; }

/* ---------- 意图看板：事情卡按定性分栏 ---------- */
.sm-bcol { display: grid; gap: 8px; align-content: start; background: var(--bg-page); border-radius: 12px; padding: 8px; border-top: 3px solid var(--v-open); position: relative; z-index: 1; }
.sm-bcol.v-must { border-top-color: var(--v-must); } .sm-bcol.v-later { border-top-color: var(--v-later); } .sm-bcol.v-skip { border-top-color: var(--v-skip); } .sm-bcol.v-cond { border-top-color: var(--v-cond); }
.sm-bcol h3 { margin: 0; font-size: 14px; display: flex; justify-content: space-between; }
.sm-bcol h3 span { color: var(--text-2); font-weight: 400; }
.sm-vform { display: grid; grid-template-columns: auto 1fr; gap: 4px; margin-top: -4px; }
.sm-vform input { min-width: 0; }
.sm-vform button { grid-column: 1 / -1; justify-self: end; }
.sm-board-hint { margin-top: 8px; }

/* ---------- 任务卡与任务详情里的地图位置、决策记录、挑选列表 ---------- */
.tg-place { display: block; font-size: 11px; color: var(--text-2); margin-top: 2px; overflow-wrap: anywhere; cursor: pointer; }
.tg-place:hover { color: var(--accent); text-decoration: underline; }
.sm-place-box { margin: 8px 0 12px; padding: 10px 12px; border-radius: 12px; background: var(--bg-page); border: 1px solid var(--sep); display: grid; gap: 6px; }
.sm-place-box h4 { margin: 0; font-size: 13px; }
.sm-place-path { display: flex; flex-wrap: wrap; gap: 2px 6px; align-items: center; font-size: 13px; }
.sm-place-path i { color: var(--text-3); font-style: normal; }
.sm-place-box .btn { justify-self: start; }
.sm-place-card { font-size: 12.5px; display: grid; gap: 2px; }
.sm-history { list-style: none; margin: 0; padding: 0; display: grid; gap: 10px; }
.sm-history li { border-left: 3px solid var(--sep-strong); padding-left: 10px; }
.sm-history li.current { border-left-color: var(--v-open); }
.sm-history p { margin: 4px 0; }
.sm-current-tag { font-size: 11px; color: var(--v-open); font-weight: 600; }
.sm-pick { max-height: 46vh; overflow: auto; display: grid; gap: 4px; font-size: 13px; }

@media (max-width: 760px) {
  .sm-source { width: 100%; }
}
