/* Outline grid: explicit columns, consistent controls, and readable hierarchy. */
:root { --outline-blue: #2b5392; --outline-line: #e1e7ef; }
body .main-content { max-width: none; }
.app-shell > .workspace-sidebar { width: 236px; min-width: 236px; flex: 0 0 236px; padding-left: 14px; padding-right: 14px; }
.workspace-sidebar .workspace-brand { flex-wrap: wrap; gap: 5px; }
.main-content > .project-heading .heading-actions #newTaskBtn { display: none; }
.outline-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 12px; min-height: 50px; padding: 8px 16px; border-bottom: 1px solid var(--outline-line); background: #fff; }
.outline-toolbar[hidden] { display: none; }
.outline-toolbar-group { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.outline-toolbar button { font-size: 14px; font-weight: 600; padding: 6px 9px; color: #4a5e7c; border: 1px solid transparent; border-radius: 6px; }
.outline-toolbar button:hover { background: #edf3fa; border-color: #dbe4f1; }
.outline-toolbar .outline-add { color: var(--outline-blue); background: #edf3fa; }
.outline-hint { color: #65758a; font-size: 13px; }
.table-draft-notice { display: flex; gap: 12px; flex-wrap: wrap; align-items: center; padding: 12px 16px; border-bottom: 1px solid #ebd6a6; background: #fff8e8; color: #735927; font-size: 14px; }
.table-draft-notice[hidden] { display: none; }
.table-draft-notice span { flex: 1 1 260px; }
.table-draft-notice button { border: 1px solid #dbc58f; border-radius: 5px; padding: 5px 8px; font-size: 14px; }
.board-card .table-wrap { overflow: auto; isolation: isolate; }
.board-card .task-table { --tree-extra: 0px; table-layout: fixed; width: 100%; min-width: calc(1426px + var(--tree-extra)); border-collapse: separate; border-spacing: 0; }
.board-card .task-table th, .board-card .task-table td { box-sizing: border-box; padding: 9px 10px; border-bottom: 1px solid var(--outline-line); border-right: 1px solid #edf0f5; font-size: 15px; text-align: left; vertical-align: middle; }
.board-card .task-table th { height: 44px; background: #f3f6fa; color: #475972; font-size: 15px; font-weight: 650; }
.board-card .task-table th.check-col { width: 50px; }
.board-card .task-table th.task-col { width: calc(340px + var(--tree-extra)); }
.board-card .task-table th.detail-col { width: 166px; }
.board-card .task-table th.owner-col { width: 148px; }
.board-card .task-table th.status-col { width: 98px; }
.board-card .task-table th.start-col, .board-card .task-table th.date-col { width: 154px; }
.board-card .task-table th.priority-col { width: 82px; }
.board-card .task-table th.dep-col { width: 142px; }
.board-card .task-table th.action-col { width: 92px; }
.board-card .task-table .task-row { --row-fill: #fff; --row-hover: #f4f8fc; --row-edge: #e1e7ef; --tree-guide: #b5c7dc; }
.board-card .task-table .task-row td { height: 64px; background: var(--row-fill); border-bottom-color: var(--row-edge); }
/* Full-width hierarchy bands, independent of task status: top-level summary,
   nested group headings, then white detail rows. Sticky cells use the same fill. */
.board-card .task-table .task-row[data-outline-kind="summary"] { --row-fill: #2b4f83; --row-hover: #244572; --row-edge: #203f6c; }
.board-card .task-table .task-row[data-outline-kind="phase"] { --row-fill: #c5dcf2; --row-hover: #b7d3ed; --row-edge: #a5c2e0; --tree-guide: #8ca9cb; }
.board-card .task-table .task-row[data-outline-kind="group"] { --row-fill: #e0eaf5; --row-hover: #d5e3f2; --row-edge: #bfd0e3; --tree-guide: #a0b9d4; }
.board-card .task-table .task-row[data-outline-kind="nested"] { --row-fill: #eef3f9; --row-hover: #e3edf7; --row-edge: #cbd9e8; }
.board-card .task-table .task-row:hover td { background: var(--row-hover); }
.board-card .task-table .task-row.is-context .task-name-input { font-style: italic; }
.board-card .task-table .task-row[data-outline-kind="summary"] td { border-right-color: #52709b; }
.board-card .task-table .task-row[data-outline-kind="summary"] .task-name-input { color: #fff; font-weight: 750; }
.board-card .task-table .task-row[data-outline-kind="summary"] .task-description-input { color: #e8f0fc; }
.board-card .task-table .task-row[data-outline-kind="summary"] .task-description-input::placeholder { color: #d3e1f4; }
.board-card .task-table .task-row[data-outline-kind="summary"] :is(.task-name-input,.task-description-input):focus { color: #243d61; background: #fff; }
.board-card .task-table .task-row[data-outline-kind="summary"] :is(.assignee-picker-label,.assignee-chevron,.task-inline-outline,.task-page-link,.tree-number,.drag-handle) { color: #edf4ff; }
.board-card .task-table .task-row[data-outline-kind="summary"] .assignee-chevron { --control-chevron: #dce9fb; }
.board-card .task-table .task-row[data-outline-kind="summary"] .assignee-picker:hover { background: #426292; }
.board-card .task-table .task-row[data-outline-kind="summary"] :is(.task-inline-outline,.task-page-link):hover { color: #244c83; background: #fff; }
.board-card .task-table .task-row[data-outline-kind="summary"] .priority-cell { padding: 4px 5px; border-radius: 5px; background: #fff; min-height: 34px; }
.board-card .task-table .task-row[data-outline-kind="summary"] .date-cell { background: #f9fbff; border-color: #d4e0ef; }
.board-card .task-table .task-row[data-outline-kind="summary"] .tree-toggle { color: #244c83; background: #fff; border-color: #fff; }
.board-card .task-table .task-row[data-outline-kind="summary"] .tree-number { font-weight: 700; }
.board-card .task-table .task-row[data-outline-kind="phase"] .task-name-input { color: #1d416e; }
.board-card .task-table .task-row[data-outline-kind="phase"] .tree-toggle { color: #214c80; border-color: #7f9fc4; background: #f4f8fe; }
.board-card .task-table .task-row:has(.row-check:checked) td { box-shadow: inset 0 2px #778ede, inset 0 -2px #778ede; }
.board-card .task-table td.check-col, .board-card .task-table th.check-col { position: sticky; left: 0; z-index: 3; min-width: 50px; padding: 8px 4px 8px 16px; overflow: visible; }
.board-card .task-table td:nth-child(2), .board-card .task-table th:nth-child(2) { position: sticky; left: 50px; z-index: 3; min-width: 0; width: auto; box-shadow: 1px 0 0 #dce4ef; }
.board-card .task-table th:first-child, .board-card .task-table th:nth-child(2) { z-index: 4; background: #f3f6fa; }
.board-card .task-table td.check-col .drag-handle { position: absolute; left: 2px; top: 50%; transform: translateY(-50%); width: 12px; font-size: 17px; color: #9aa9bd; cursor: grab; margin: 0; }
.board-card .task-table .task-name { display: flex; position: relative; align-items: center; gap: 6px; width: 100%; min-width: 0; padding-left: calc(var(--task-depth, 0) * 24px); }
.tree-guides { pointer-events: none; position: absolute; left: 10px; top: 0; bottom: 0; width: calc(var(--task-depth, 0) * 24px); background: repeating-linear-gradient(to right, transparent 0 10px, var(--tree-guide) 10px 11px, transparent 11px 24px); }
.tree-guides::after { content: ''; position: absolute; right: 0; top: 50%; width: 14px; border-top: 1px solid var(--tree-guide); }
.task-row[data-depth="0"] .tree-guides { display: none; }
.tree-toggle, .tree-toggle-space { display: inline-flex; flex: 0 0 22px; width: 22px; height: 22px; align-items: center; justify-content: center; border-radius: 4px; }
.tree-toggle { padding: 0; border: 1px solid #91aac9; background: #fff; color: var(--outline-blue); }
.tree-toggle:hover { background: #e6eef9; border-color: #496e9e; }
.tree-toggle:focus-visible { outline: 2px solid #7596ce; outline-offset: 3px; }
.tree-toggle svg { width: 14px; height: 14px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; }
.tree-leaf-dot { width: 5px; height: 5px; border-radius: 1px; background: #92a6c0; }
.tree-number { color: #566c89; font-size: 13px; font-weight: 600; font-variant-numeric: tabular-nums; flex: 0 0 auto; }
.board-card .task-table .task-name-input { display: block; flex: 1 1 0; min-width: 100px; width: 100%; height: 46px; min-height: 24px; max-height: 46px; padding: 1px 3px; font-size: 16px; line-height: 21px; font-weight: 550; color: #243d61; background: transparent; overflow: hidden; resize: none; border: 1px solid transparent; border-radius: 4px; }
.board-card .task-table .is-parent .task-name-input { font-weight: 700; }
.board-card .task-table .task-name-input:focus { border-color: #7093c8; background: #fff; }
.board-card .task-table .task-description-input { width: 100%; height: 44px; min-height: 44px; padding: 1px 2px; font-size: 14px; line-height: 21px; color: #5f7087; background: transparent; }
.board-card .task-table .inline-template-picker { flex: 0 0 auto; height: 28px; min-height: 28px; min-width: 0; padding: 3px 6px; font-size: 12px; gap: 3px; border-color: #dae3f0; background: #fff; color: #4e6c9c; border-radius: 5px; }
.task-page-link { flex: 0 0 26px; width: 26px; height: 30px; display: grid; place-items: center; color: #6c85aa; border-radius: 5px; }
.task-page-link:hover { color: #2b5392; background: #e3edf9; }
.task-page-link svg { width: 17px; height: 17px; fill: none; stroke: currentColor; stroke-width: 1.7; }
.board-card .task-table td.status-cell .status-select-button { min-width: 0; width: 100%; height: 34px; min-height: 34px; padding: 5px 4px; border-radius: 5px; font-size: 15px; }
.board-card .task-table .assignee-picker { gap: 5px; min-width: 0; padding: 4px 0; }
.board-card .task-table .assignee-picker-label { font-size: 14px; }
.board-card .task-table .user-avatar { flex: 0 0 28px; width: 28px; height: 28px; min-width: 28px; border-radius: 50%; font-size: 11px; }
.board-card .task-table .date-cell { min-width: 0; width: 100%; min-height: 34px; padding: 5px 7px; gap: 5px; }
.board-card .task-table .date-label { font-size: 15px; font-variant-numeric: tabular-nums; white-space: nowrap; text-overflow: clip; }
.board-card .task-table .date-icon { font-size: 15px; }
.board-card .task-table .priority-cell { gap: 4px; min-width: 0; }
.board-card .task-table .priority-select { flex: 1 1 0; font-size: 15px; min-width: 0; padding: 4px 18px 4px 0; padding-right: 18px !important; width: 100%; background-position: right 2px center; }
.board-card .task-table .priority-dot { flex: 0 0 6px; width: 6px; height: 6px; }
.board-card .task-table .dep-chip { font-size: 13px; line-height: 19px; padding: 4px 6px; color: #466995; background: #eaf0f8; }
.task-row-actions { display: flex; gap: 5px; align-items: center; justify-content: flex-end; }
.row-outline-menu, .board-card .task-table .row-delete { display: grid; place-items: center; width: 30px; min-width: 30px; height: 32px; min-height: 32px; border: 1px solid #dce4ee; border-radius: 6px; background: #fff; padding: 5px; }
.row-outline-menu { color: #536d91; font-size: 20px; }
.row-outline-menu.task-inline-outline { flex: 0 0 24px; width: 24px; min-width: 24px; padding: 2px; border-color: transparent; background: transparent; }
.row-outline-menu.task-inline-outline:hover { border-color: #c9d8eb; background: #fff; }
.board-card .task-table td:last-child, .board-card .task-table th:last-child { position: sticky; right: 0; z-index: 3; border-left: 1px solid var(--outline-line); }
.board-card .task-table .row-delete { color: #cc4e5c; border-color: #f0d0d5; background: #fff9fa; }
.board-card .task-table .row-delete svg { width: 17px; height: 17px; }
.outline-menu { width: 240px; padding: 8px; }
.outline-menu button { display: flex; align-items: center; width: 100%; gap: 10px; min-height: 36px; padding: 7px 10px; border-radius: 5px; text-align: left; color: #314967; font-size: 14px; }
.outline-menu button:hover { background: #edf3fa; }
.outline-menu button:disabled { opacity: .4; cursor: not-allowed; }
.outline-menu .outline-menu-symbol { font-size: 17px; width: 20px; color: #7890b0; }
.outline-menu hr { border: 0; border-top: 1px solid #e5eaf2; margin: 5px 0; }
.task-row.drop-before td { border-top: 2px solid #2b5392 !important; }
.task-row.drop-after td { border-bottom: 2px solid #2b5392 !important; }
.task-row.dragging td { opacity: .5; }
.project-item.is-mine:not(.active) { background: #edf3fb; border-left: 3px solid #698abf; }
.project-item .project-mine-marker { font-size: 11px; color: #426ba4; padding: 2px 5px; background: #e0eaf8; border-radius: 4px; white-space: nowrap; }
.project-list-label { padding: 12px 9px 5px; color: #75849a; font-size: 12px; }
.project-feishu-settings { max-width: 560px; width: 100%; padding: 24px; background: #fff; border: 1px solid #d8e3f1; border-radius: 14px; box-shadow: 0 20px 70px #15274026; }
.project-feishu-settings h2 { font-size: 23px; }
.project-feishu-settings p { font-size: 14px; color: #65758e; line-height: 1.6; }
.project-feishu-settings label { display: grid; gap: 8px; margin: 20px 0; font-size: 15px; }
.project-feishu-settings input { width: 100%; padding: 11px 12px; font: inherit; border: 1px solid #cad7e8; border-radius: 7px; }
.project-feishu-settings .feishu-enabled { display: flex; align-items: center; }
.project-feishu-settings .feishu-enabled input { width: 18px; height: 18px; }
.project-feishu-settings footer { display: flex; justify-content: flex-end; gap: 8px; margin-top: 20px; }
.feishu-settings-error { color: #b54150 !important; }
.task-detail-route .main-content > .project-heading, .task-detail-route .main-content > .board-card { display: none !important; }
#taskDetailPage[hidden] { display: none; }
.notification-task-link { display: inline-block; margin-top: 6px; font-size: 14px; color: #2b5392; }
@media (max-width: 760px) {
  .app-shell > .workspace-sidebar { width: 100%; min-width: 0; flex: none; }
  .board-card .task-table td:last-child, .board-card .task-table th:last-child { position: static; }
  .outline-hint { display: none; }
  .outline-toolbar { padding: 8px; min-height: 46px; }
  .outline-toolbar button { min-height: 34px; padding: 5px 7px; }
  .project-list-label { display: none; }
  .project-item .project-mine-marker { font-size: 10px; }
  .board-card .task-table { min-width: calc(1356px + var(--tree-extra)); }
  .board-card .task-table th.task-col { width: calc(270px + var(--tree-extra)); }
  .board-card .task-table .task-name-input { min-width: 72px; font-size: 15px; }
  .board-card .task-table th:nth-child(2), .board-card .task-table td:nth-child(2) { position: static; box-shadow: none; }
  .board-card .task-table td.task-name-cell { position: relative; left: auto; }
  .board-card .task-table .inline-template-picker { font-size: 11px; padding: 3px; }
  .board-card .task-table .task-name { gap: 3px; }
  .heading-actions { flex-wrap: wrap; }
}
